GDB Debugger - Beyond 0.9.15
分类: 下载/工具 · 工具软件 | 来源: 点击进入 | 版本: 0.9.15 |
日期: 2025-06-18 | 人气: | 大小: |
标签: Debug C++ debuggers cpp debugger gdb pascal beyond fpc |
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都能助您高效调试。
支持的功能:
- 插入、移除、启用、禁用和设置条件断点
- 查看局部变量
- 查看监视变量
- 多线程调试
- 远程和扩展远程调试
- 支持gdbserver --multi
- 从本地到远程传输文件
- 在调试控制台使用原生命令
- 附加到进程
使用调试器:
- 在您的系统上安装gdb。
- 在VS Code中安装Beyond Debug扩展。
- 打开您的项目。
- 切换到调试视图并点击齿轮下拉菜单。
- 选择调试环境"GDB(Beyond)"。
- 按下绿色的"播放"按钮开始调试。
现在,您可以开始调试您的程序。
启动程序:
使用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 | 启动前从本地传输文件到远程 |
待办事项:
- 添加国际化支持
- 支持lldb-mi
感谢:
- dbgmits 该库用于通过JavaScript以编程方式控制实现GDB/机器接口的调试器。
-
- Golang云原生架构师课程
- Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
- 204次学习
-
- MySQL数据管理之备份恢复案例解析视频教程
- 《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
- 160次学习
-
- MySQL索引优化解决方案
- 本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
- 182次学习
-
- 极客学院Docker视频教程
- Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
- 243次学习
-
- Golang进阶实战编程
- 本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
- 127次学习
-
- JavaScript极速入门
- 本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......
- 431次学习
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- GoLand调式动态执行代码
- 2023-01-13 502浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- 用Nginx反向代理部署go写的网站。
- 2023-01-17 502浏览
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览