配合remote-ssh
,可以很好地使用gdb直接调试远程服务器上的程序
比如我们此次使用GDB来直接调试nginx
配置gcc和gdb的路径
配置此次项目的一些特殊配置
{
"files.associations": {
"ngx_config.h": "c"
},
"remote.SSH.remotePlatform" : "linux",
}
配置launch.json
,配置查执行程序的路径,配置gdb
的路径
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc build active file",
"type": "cppdbg",
"request": "launch",
//指定程序的路径
"program": "${workspaceFolder}/objs/nginx",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "gcc build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
配置tasks.json
,来指定gcc
的路径
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
添加断点并进行代码调试
添加断点,然后按F5进行调试。如果要修改启动参数的话,在launch.json
中添加启动参数
nginx需要添加单进程模式,这样方便调试
worker_processes 1;
master_process off; # 单进程模式
daemon off;
添加断点并调试.png
网友评论