我用命令行编译代码。这里是我如何编译一个名为";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