登录
GDB Debugger - Beyond
分类:工具软件 访问:27 下载量:0

软件介绍

更新时间:2025-06-18

Beyond Debug

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
  • 从本地到远程传输文件
  • 在调试控制台使用原生命令
  • 附加到进程

使用调试器:

  1. 在您的系统上安装gdb。
  2. 在VS Code中安装Beyond Debug扩展。
  3. 打开您的项目。
  4. 切换到调试视图并点击齿轮下拉菜单。
  5. 选择调试环境"GDB(Beyond)"。
  6. 按下绿色的"播放"按钮开始调试。

现在,您可以开始调试您的程序。

启动程序:

使用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 ...

配置:

名称类型默认值描述附加
debuggerPathstringgdb调试器的路径(如gdb)
debuggerArgsarray调试器的附加参数
programstring程序可执行文件的完整路径
programArgsstring传递给程序的命令行参数
cwdstring${workspaceRoot}目标的工作目录
stopAtEntrybooleanfalse如果为true,调试器应在目标入口点停止
commandsBeforeExecarray启动前执行的一个或多个GDB/GDB-MI命令
varUpperCasebooleanfalse将所有变量转换为大写。用于不区分大小写的语言,例如Pascal
defaultStringCharsetstring设置显示字符串变量的字符集。例如utf-8
remote
enabledbooleantrue如果为true,将激活远程模式
addressstring远程地址和端口。[ip:port]
modestringremote扩展目标模式。可以是remote或extended-remote
execfilestring远程执行文件
transferarray启动前从本地传输文件到远程
ssh
enabledbooleantrue如果为true,将激活ssh模式
addressstring远程地址和端口。[ip:port]
usernamestring登录用户名
passwordTypestring使用密码的方式。可以是input或inputAndSave
privateKeystring登录的私钥文件路径(例如id_rsa)。如果密码不为空,将被忽略
timeoutstringSSH超时时间(ms)
remoteSrcPrefixstring远程源代码的路径前缀。如果不为空,将被localSrcPrefix替换
localSrcPrefixstring本地源代码的路径前缀
transferarray启动前从本地传输文件到远程

待办事项:

  • 添加国际化支持
  • 支持lldb-mi

感谢:

  • dbgmits 该库用于通过JavaScript以编程方式控制实现GDB/机器接口的调试器。

本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!

本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!

如有侵权请联系我们删除下架,联系方式:study_golang@163.com

最新教程

查看更多
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......