GDBFrontend 是一个简单、灵活且可扩展的 GUI 调试器。在线尝试一下!
您可以使用pip
安装 GDBFrontend 。
sudo python3 -m pip install gdbfrontend
如果它已经安装并且您正在升级
sudo python3 -m pip install --upgrade gdbfrontend
或者如果你想安装特定的 GIT 快照:
sudo python3 setup.py install
你可以运行
gdbfrontend
您可以下载最新的源代码并运行它。
您可以使用以下命令运行 gdb-frontend:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
你可以用以下命令打开它:
http://127.0.0.1:5550/
您可以使用以下命令打开 GDB shell:
tmux a -t gdb-frontend
您可以为基于 Arch 的发行版安装 Arch Linux 软件包。 (AUR 套餐)
yay -S gdb-frontend-bin
你可以运行它:
gdbfrontend
Flatpak 包是一个 TODO。
按照本教程学习如何使用 GDBFrontend 调试 Dockerized C/C++ 应用程序。
按照此快速教程使用 GDBFrontend 调试嵌入式设备。
按照此快速教程使用 GDBFrontend 调试本机 C Python 扩展。
GDBFrontend 拥有强大且可扩展的 API。按照这个快速教程学习开发 GDBFrontend 插件。
按照此快速教程了解特殊开发/调试要求的集成想法。
按照本教程使用 OpenOCD 和 GDBFrontend 调试 STM32。
GDBFrontend 有一个表达式计算器,您可以同时使用多个。
右键单击断点以设置其条件。
所有变量、成员和项的表达式都在 GDBFrontend 的 VariablesExplorer 中连接。
您可以使用流程管理器监视、过滤或管理流程。
GDBFrontend 有一组名为“增强协作”的协作功能。
当您启用增强协作时,协作绘图可用。单击“绘图”或使用Ctrl + Shift + X快捷键进行绘图,并使用 Ctrl + Shift + C清除所有绘图。
通过增强协作,所有调试器客户端都可以在源代码查看时同步。
GDBFrontend 具有很强的可扩展性并且具有强大的 API。 GDBFrontend 可扩展性的一些示例。
./gdbfrontend
$ gdbfrontend --help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:
--help, -h: Shows this help message.
--version, -v: Shows version.
--gdb-args= " ARGS " , -G " ARGS " : Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATH: Specifies GDB executable path (Default is " gdb " command on PATH environment variable.)
--tmux-executable=PATH, -tmux PATH: Specifies Tmux executable path (Default is " tmux " command on PATH environment variable.)
--terminal-id=NAME, -t NAME: Specifies tmux terminal identifier name (Default is " gdb-frontend " .)
--credentials=USER:PASS, -c USER:PASS: Specifies username and password for accessing to debugger.
--host=IP, -H IP: Specifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
--port=PORT, -p PORT: Specifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATH: Specifies URL base path. (Default: /)
--readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
--workdir, -w: Specifies working directory.
--plugin-dir, -P: Specifies plugins directory.
--dontopenuionstartup, -D: Avoids opening UI just after startup.
--verbose, -V: Enables verbose output.
--help
, -h
显示帮助文本。
--version
, -v
显示版本。
--gdb-args="ARGS", -G "ARGS"
指定 GDB 命令行参数。 (选修的)
--gdb-executable=PATH
, -g PATH
您可以指定 GDB 可执行文件路径,例如gdbfrontend --gdb-executable=/path/to/gdb
。 (选修的)
--tmux-executable=PATH
, -tmux PATH
您可以指定 Tmux 可执行路径,例如gdbfrontend --tmux-executable=/path/to/tmux
。 (选修的)
--terminal-id=PATH
, -t PATH
您可以指定 Tmux 终端 id,例如gdbfrontend --terminal-id=terminal-name
。 (默认: gdb-frontend
)
--credentials=USER:PASS
, -c USER:PASS
指定用于访问调试器的用户名和密码。
--host=IP
, -H IP
指定您可以通过 HTTP 和 WS 服务器访问的当前主机地址。
--listen=IP
, -l IP
指定 HTTP 和 WS 服务器的侦听地址。
--port=PORT
, -p PORT
指定 HTTP 端口。 (0 表示随机端口。)
--url-base=PATH
, -u PATH
指定 URL 基本路径。 (默认: /)
--readonly, -r
使代码编辑器只读。 (注意:此选项与安全无关。)
--workdir, -w
指定工作目录。
--plugin-dir, -P
指定插件目录。
--dontopenuionstartup
, -D
避免在启动后立即打开 UI。
--verbose
, -V
启用详细输出。
GDBFrontend 的 GDB 命令以gf-
开头。
gf-refresh
刷新所有浏览器客户端。
gf-theme [theme-name]
切换到所需的主题。例如: gf-theme light
、 gf-theme red
或gf-theme default
为默认主题。
gf-list-plugins
列出插件目录中的所有 GDBFrontend 插件。
gf-load-plugin [plugin-name]
加载 GDBFrontend 插件。
gf-unload-plugin [plugin-name]
卸载 GDBFrontend 插件。
下面列出了当前的热键。
行动 | 热键 | 语境 |
---|---|---|
常规:打开源文件 | Ctrl + O | GDB前端 |
一般:新的 ExpressionEvaluator | Ctrl + R | GDB前端 |
一般:本机窗口上的新 ExpressionEvaluator | Ctrl + Shift + R | GDB前端 |
一般:模糊源查找器 | Ctrl+P | GDB前端 |
运行时:运行 | F5 | GDB前端 |
运行时间:继续 | F6 | GDB前端 |
运行时:暂停/中断 | F7 | GDB前端 |
运行时:单步执行 | F8 | GDB前端 |
运行时:步入 | F9 | GDB前端 |
运行时:步骤指令 | F10 | GDB前端 |
运行时:停止 | F11 | GDB前端 |
增强协作:切换绘图模式 | Ctrl + Shift + X | GDBFrontend / 增强协作:已启用 |
增强协作:清除所有绘图 | Ctrl + Shift + C | GDBFrontend / 增强协作:已启用 |
GDBFrontend 有内置主题。
要在主题之间切换,请在 GDB shell 上使用gf-theme [THEME]
命令。
(gdb) gf-theme doki
(gdb) gf-theme sky
(gdb) gf-theme sakura
(gdb) gf-theme waifu
(gdb) gf-theme cyberpunk
(gdb) gf-theme dark
(gdb) gf-theme green
(gdb) gf-theme light
(gdb) gf-theme red
用于切换回默认主题。
(gdb) gf-theme
您可能还想查看插件开发教程。
您可以通过gdbfrontend
模块访问 GDBFrontend 的 Python API。
(gdb) python-interactive
> >> dir ( gdbfrontend )
例如,您可以像这样获取所有客户端套接字:
> >> gdbfrontend . api . globalvars . httpServer . ws_clients
{ 1 : < server . GDBFrontendSocket object at 0 x ... > }
或者你可以获得所有插件:
> >> gdbfrontend . plugin . getAll ()
[ 'hello' , 'theme_cyberpunk' , 'theme_dark' , 'theme_doki' , 'theme_green' , 'theme_light' , 'theme_red' , 'theme_sakura' , 'theme_sky' , 'theme_waifu' ]
您可以使用--credentials=USER:PASS
选项将 HTTP 身份验证添加到调试器会话中。
GDBFrontend 主要是在基于 Chromium 的浏览器上进行开发和测试。它可以在其他浏览器上正常工作,尤其是 Firefox,但如果您在其他浏览器上遇到一些问题,您可以发送错误报告。
大多数 GDBFrontend 函数都是线程安全的,并且在 GDB 的主线程上工作。因此,如果您在 GDB shell 上运行阻塞的内容,GDBFrontend 函数必须等待它完成。
当线程安全的 GDBFrontend 函数需要工作并且您阻塞了 GDB 的主线程时,您将收到此警告。
(gdb) shell
$ ...
当您退出 shell 时,阻塞的 GDBFrontend 函数将继续工作。
注意:有时您可能会在没有在 GDB shell 中运行任何内容的情况下收到此警告,这意味着某些内容(在 GDB 的事件循环中)花费了很长时间;在这种情况下,只需忽略此警告即可。
GDBFrontend 向其子进程、您的应用程序及其子进程发送 SIGTERM。如果您的应用程序正在分叉新进程并设置其 PGID,GDBFrontend 可能不会关闭它们。在这种情况下,您应该向您的进程发送 SIGKILL。
pkill -f gdb
如果您将ExpressionEvaluator与非常长的深度扩展变量/成员一起使用,则您的滚动和求值器窗口移动性能可能会受到影响,对指针可视化产生不利影响。在这种情况下,您可以关闭该求值器窗口的信号和槽指向。
事实上,gdb-frontend 能够在 Windows 上运行,但是 GDB 的 Windows 版本存在一些严重的问题,避免在 Windows 上使用 gdb-frontend。当然,如果您使用的是 Windows 10,则可以在 WSL 上使用 gdb-frontend。
您可以在 WSL(适用于 Linux 的 Windows 子系统)上使用 gdb-frontend。
/proc/net/tcp
接口在 WSL 上不起作用。 (WSL 2 没有这个问题。) 自 v0.2.0-beta 以来,GDBFrontend 改用了新的版本控制策略。
在vX.YZ-STABILITY
中:
X
是主要版本,会随着主要功能和增强而长期变化。Y
是包含新功能和增强功能的主要版本。Z
是主要版本的错误修复版本。STABILITY
是版本的稳定性级别。 ( alpha
, beta
, rcN
, stable
) 文档还属于 TODO。
API 文档还属于 TODO。
您可以阅读插件开发教程。
主题作为插件开发。
加入 Discord 社区。
您可以通过提交项目或开发插件来做出贡献。欢迎所有提交。
货币 | 地址 |
---|---|
比特币 | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
以太坊 / 泰达币 / 泰达币 | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
推荐捐赠 USDT 或 USDC,但您可以捐赠上述任何货币。 ?
版权所有 (C) 2019,Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
GNU 通用公共许可证 v3 (GPL-3)
只要您跟踪源文件中的更改/日期,您就可以复制、分发和修改该软件。对软件的任何修改或软件,包括(通过编译器)GPL 许可的代码,也必须在 GPL 下以及构建和安装说明中提供。