使用命令行编译cpp项目,但在Vscode中进行调试



我用命令行编译代码。这里是我如何编译一个名为";out";具有2个库a和b

g++   -c -O3 -I../../include/boost_1_61_0 -std=c++14  -MMD  -MP -MF "a.o.d" -o a.o ../../my_Library/lib_a.cpp
g++  -c -O3  -I../../include/boost_1_61_0 -std=c++14  -MMD   -MP -MF  "b.o.d" -o b.o ../../my_Library/lib_b.cpp
g++ -lcurl -g -std=c++11 -lpthread    -o out a.o b.o -L../../include/shared_libraries -no-pie -lsqlite3 -lrt -lpthread -lcurl -fopenmp -lboost_serialization -lconfig++ -lpq -lstdc++ -lz -lboost_thread -lboost_system -lboost_program_options

最后,我得到了文件(.o和.od(-a,b,out我想用Vscd调试一个cpp文件和一个bcpp文件,我该怎么做?

我知道我需要编辑tasks.json和launch.json,但我不知道。我使用ubuntu。感谢

我使用ubuntu。

感谢

#################编辑##############

我照克日什托夫·莫乔基说的做了。经过一些小改动后,它就起作用了。

首先,我从编译行(-O3(中删除了优化标志

其次,我在编译行中添加-g(调试标志(。

g++   -c -g  -I../../include/boost_1_61_0 -std=c++14  -MMD -MP -MF "a.o.d"  -o a.o my_Librar/a.cpp

最后一个更改是在launch.json中的字段";程序";我在那里写程序路径,而不是.o路径

"program": "my/path/a",

现在我可以使用Vscode进行调试了。

谢谢Krzysztof Mochocki

以下是配置示例:

{
"name": "(gdb) Launch my super program with 3 args",
"type": "cppdbg",
"request": "launch",
"program": "/home/user/build/my_program.o",
"args": ["arg1", "--arg-2", "arg_3"],
"stopAtEntry": false,
"cwd": "/home/user/build/workspace",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}

正如我在Your compile命令中看到的,恐怕它不是最佳的。尝试使用一些cmake,因为您将添加更多的文件,所以维护编译命令将更加困难。

此外,您的代码是不可调试的,因为您没有添加任何调试信息参数。如果你使用cmake,它会在指定一个参数后自动添加它:CMAKE_BUILD_TYPE=Debug,所以你的发布示例cmake看起来像:

cmake ../src

用于调试:

cmake -DCMAKE_BUILD_TYPE=Debug ../src

相关内容

  • 没有找到相关文章

最新更新