GDB Debugger - Beyond:Visual Studio Code的强大调试工具
GDB Debugger - Beyond 是一个为Visual Studio Code设计的调试适配器,通过GDB的机器接口(MI)实现,为开发者提供了强大的调试能力。无论您是开发C、C++、Pascal、ObjectPascal、Fortran、D、Go、Objective-C、OpenCL C、Rust、汇编、Modula-2还是Ada语言的程序,Beyond Debug都能助您高效调试。
支持的功能:
使用调试器:
现在,您可以开始调试您的程序。
启动程序:
使用launch.json并将请求设置为"launch"。您还需要指定可执行文件路径,以便调试器找到调试符号。
{
"type": "by-gdb",
"request": "launch",
"name": "Launch(gdb)",
"program": "${fileBasenameNoExtension}",
"cwd": "${workspaceRoot}"
}
附加到进程:
当前,附加到现有进程只能通过在launch.json中指定processId并将请求设置为"attach"来实现。您还需要指定可执行文件路径,以便调试器找到调试符号。如果未设置program参数,将显示选择进程窗口。如果设置了program参数且只找到一个进程,调试器将自动启动。
{
"type": "by-gdb",
"request": "attach",
"name": "Attach(gdb)",
"program": "${fileBasenameNoExtension}",
"cwd": "${workspaceRoot}"
}
连接到gdbserver:
您可以使用gdbserver作为远程调试器。为此,修改launch.json,将请求设置为"launch",并设置远程部分如下:
{
"type": "by-gdb",
"request": "launch",
"name": "Launch(gdb)",
"program": "${fileBasenameNoExtension}",
"cwd": "${workspaceRoot}",
"remote": {
"enabled": true,
"address": ":2345",
"mode": "remote",
"execfile": "${fileBasenameNoExtension}"
}
}
这将连接到localhost:2345上的远程gdbserver。
从本地到远程传输文件:
在进行跨平台编译时,通常需要将本地编译的文件传输到服务器上。为此,您需要设置remote - transfer如下:
{
...
"remote": {
"enabled": true,
"address": ":2345",
"mode": "remote",
"execfile": "${fileBasenameNoExtension}",
"transfer": [
{
"from": "${fileBasenameNoExtension}",
"to": "${fileBasenameNoExtension}"
}
]
}
}
使用扩展远程模式:
要使用扩展远程模式,您必须运行gdbserver --multi。然后在launch.json中将远程模式更改为extended-remote。
{
"remote": {
"enabled": true,
"address": ":2345",
"mode": "extended-remote",
"execfile": "[filename]",
}
}
通过SSH使用gdb:
要通过SSH使用gdb,您可以使用ssh模式如下:
{"ssh": {
"enabled": true,
"address": "123.123.1.1:1234",
"username": "root",
"passwordType": "none",
"timeout":1000,
//"privateKey":"~/.ssh/id_rsa"
//"remoteSrcPrefix": "/root/test/src",
//"loacalSrcPrefix": ""
// "transfer": [
// {"from": "z:/tmp/src/project1","to": "/root/test/project1"}
// ]
}
}
如果passwordType和privateKey为空,它将尝试使用系统的.ssh/id_rsa文件进行身份验证。
使用gdb的原生命令:
您可以在调试控制台中使用所有GDB命令,就像在shell中一样。
查看内存:
您可以在调试控制台或安装了Microsoft Hex Editor的情况下查看内存数据。在调试时右键点击编辑器,或使用命令beyond:View Memory。如果未选择内容,您可以输入地址格式为[address or variable]:[address length (default:100) ],例如0x1111:12或0x1111或va:123或s.c_str():100 ...
配置:
名称 | 类型 | 默认值 | 描述 | 附加 |
---|---|---|---|---|
debuggerPath | string | gdb | 调试器的路径(如gdb) | |
debuggerArgs | array | 调试器的附加参数 | ||
program | string | 程序可执行文件的完整路径 | ||
programArgs | string | 传递给程序的命令行参数 | ||
cwd | string | ${workspaceRoot} | 目标的工作目录 | |
stopAtEntry | boolean | false | 如果为true,调试器应在目标入口点停止 | |
commandsBeforeExec | array | 启动前执行的一个或多个GDB/GDB-MI命令 | ||
varUpperCase | boolean | false | 将所有变量转换为大写。用于不区分大小写的语言,例如Pascal | |
defaultStringCharset | string | 设置显示字符串变量的字符集。例如utf-8 | ||
remote | ||||
enabled | boolean | true | 如果为true,将激活远程模式 | |
address | string | 远程地址和端口。[ip:port] | ||
mode | string | remote | 扩展目标模式。可以是remote或extended-remote | |
execfile | string | 远程执行文件 | ||
transfer | array | 启动前从本地传输文件到远程 | ||
ssh | ||||
enabled | boolean | true | 如果为true,将激活ssh模式 | |
address | string | 远程地址和端口。[ip:port] | ||
username | string | 登录用户名 | ||
passwordType | string | 使用密码的方式。可以是input或inputAndSave | ||
privateKey | string | 登录的私钥文件路径(例如id_rsa)。如果密码不为空,将被忽略 | ||
timeout | string | SSH超时时间(ms) | ||
remoteSrcPrefix | string | 远程源代码的路径前缀。如果不为空,将被localSrcPrefix替换 | ||
localSrcPrefix | string | 本地源代码的路径前缀 | ||
transfer | array | 启动前从本地传输文件到远程 |
待办事项:
感谢:
本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:study_golang@163.com