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

Compiling cpp Project with command line But debugging in Vscode

我用命令行编译我的代码。这是我如何使用 2 个库 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文件怎么办?

我知道我需要编辑 tasks.json 和 launch.json 但我不知道怎么做。 我使用 ubuntu。 谢谢

我用ubuntu.

谢谢

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

我按照 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

最后的更改是在 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