为了能对程序进行点到点的调试,了解程序内部运行情况,我们需要对生成的可执行程序进行调试。需要在利用cmake文件生成可执行程序时加入几行代码,告诉程序有debug的需求。代码如下所示:
#debug版本才能调试
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
使用配置文件的方式调试
然后配置launch.json和task.json文件,先进行如下操作:


会生成如下文件,在vscode界面右下角点击add configuration


点击launch选项

如下,修改program的位置到生成执行文件的地方,arg里面写入我们执行文件需要的参数。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/test1.9/output/arg_test",
"args": ["3", "4", "5"],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
然后生成task.json文件,ctrl+shift+p


生成代码如下:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: /usr/bin/gcc"
}
]
}

按F5debug运行后结果如下:可以看到size*的值分别为3, 4, 5

使用gdb的方式调试
使用此方式在make生成可执行程序后,直接在命令行输入:
gdb your_exe_file
结果如下

可使用链接: GDB保姆级调试指南中的指令来调试程序,此方式不需要生成launch等文件,甚至不需要操作界面,只需要命令行系统,方便的同时又有点过于简洁与抽象了
链接: github
3581

被折叠的 条评论
为什么被折叠?



