VSCode是真正的生产力工具,尤其是前一阵子推出的remote-SSH
功能,让远程轻量调试服务器代码效率有了质的飞越。不过本文不谈VSCode的remote-ssh
功能。今天主要继续聊一下VSCode的对C 代码的debug功能。
之前的文章中,利用VScode和cmake编译构建C 工程代码
和如何对Pytorch进行“深入”的DEBUG这两篇文章已经或简单或深入地讲解了VSCode的debug特性,而本文则对此进行补充,聊一些需要注意的地方。
不是每次都需要tasks.json
如果我们仅仅是想要借助VSCode的debug窗口,去debug我们已经生成的可执行文件,那我们完全不需要tasks.json
,这个文件是提供编译时的帮助文件,设置好tasks.json
参数后通过执行其设置好的gcc命令等等去编译。如果我们已经有编译好的,就不需要这个东西了。
我们只需要launch.json
文件,以下是我配置好的一个example:
{
"version": "0.2.0",
"configurations": [
{
"name": "debug",
"type": "cppdbg",
"request": "launch",
"program": "path/to/bin",
"args": [
"--model-repository=/test_model_repository_debug/centernet-trt-ensemble",
"--http-port=8007",
"--cuda-memory-pool-byte-size=0:134217728"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [{"name":"LD_LIBRARY_PATH", "value":"${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/home/re2/obj/so"},
{"name":"CUDA_VISIBLE_DEVICES","value": "4"}],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb",
"logging": { "engineLogging": true }
}
]
}
以下分析一下我们常用的几个地方:
- 去掉
preLaunchTask": "g "
,因为我们不需要tasks.json
"request": "launch"
一般都是launch
,如果需要捕获进程进行attach则设置为attach
,可以看如何对Pytorch进行“深入”的DEBUG"program": "path/to/bin"
编译出来的可执行文件地址"args": [ ],
命令行参数,具体怎么写看上头的"environment": [{"name":"CUDA_VISIBLE_DEVICES","value": "4"}],
环境变量,如果我们的可执行文件需要设置环境变量则修改这个,修改格式具体看上头的例子
其他的不常用,就不介绍了,还想要了解的看官方文档 https://code.visualstudio.com/docs/editor/debugging 。