如何解决使用命令行编译cpp项目但是在Vscode中调试
我用命令行编译我的代码。这是一个示例,说明了我如何使用两个库a和b编译名为“ out”的程序
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 我想用Vscod调试cpp文件和b cpp文件,我该怎么做?
我知道我需要编辑task.json和launch.json,但是我不知道如何做。 我使用ubuntu。 谢谢
我使用ubuntu。
谢谢
################# EDIT ##################
我按照了Krzysztof Mochocki所说的做。经过一些细微的改动,它就可以工作。
首先,我从编译行(-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
最后一个更改是在“ program”字段中的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
}
]
}
我在您的编译命令上看到,恐怕不是最佳选择。尝试使用一些cmake,因为您将添加更多文件,因此很难维护编译命令。
此外,您的代码不可调试,因为未添加任何调试信息参数。如果使用cmake,它将在指定一个参数CMAKE_BUILD_TYPE=Debug
之后自动添加它,因此您要发布的cmake示例如下:
cmake ../src
并用于调试:
cmake -DCMAKE_BUILD_TYPE=Debug ../src
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。