学习 GDB 命令在我的愿望清单上,但同时是否有用于 *nix 平台的图形调试器,它接受Windbg 命令并具有类似的功能?例如,是否能够显示多个可编辑的内存窗口、在步进时自动在一个区域周围进行反汇编、设置反汇编风格以及具有带有可编辑值的寄存器的窗口?
GDB 的图形用户界面
我开始了我自己的名为gdbgui的 gdb 前端,它是一个服务器(在 python 中),可让您在浏览器中访问全功能前端。
安装
pip install gdbgui --upgrade
或在gdbgui.com下载
适用于所有平台(Linux、macOS 和 Windows)和带有 JavaScript 的浏览器。
跑
只需输入
gdbgui
在您的终端中,您的浏览器将打开一个新选项卡。
特征
- 设置/删除断点
- 查看源代码,带有可选的内联机器代码
- 选择堆栈中的当前帧
- 单步执行源代码或机器代码
- 创建/探索变量
- 查看/选择线程
- 探索记忆
- 查看寄存器
- 完整的 gdb 终端功能,因此您可以发送传统的 gdb 命令,并查看 gdb/劣质程序输出
- 布局灵感来自令人惊叹的 Chrome 调试器
- 兼容 Mozilla 的 RR,用于反向调试
虽然有些人不关心它的界面,但值得一提的是 GDB 也有自己的内置 GUI(称为 TUI)。
您可以使用以下命令在 GUI 模式下启动 GDB: gdb -tui
可以在此处找到 TUI 命令的快速参考:http : //beej.us/guide/bggdb/#qref
我通常使用 Emacs GUD 作为 GDB 前端。
它不太难使用,允许您直观地设置断点(或者如果您愿意,可以通过 GDB 窗口)。
它有多个不同的视图,您可以从顶级 GDB 菜单访问这些视图:
它还允许诸如允许您通过将鼠标悬停在值上来检查值之类的细节:
为了使用它,您首先需要使用 导航到二进制文件的文件夹C-x C-f
,然后M-x gdb
(即“ Alt + X
”,然后键入“ gdb
”)。执行此操作后,您可以键入 gdb 命令行,或者直接点击[Enter]
接受其默认值。从那里,您只需在 gdb 窗口中键入“start”,并输入您想要传递给正在调试的程序的任何参数。
在那之后,你几乎是金色的,但只有一种观点。屏幕顶部“GUD”下的菜单将让您打开其他相关视图,用于您尝试调试的任何内容。(框架是单独的窗口,“Windows”是框架内的窗口)
通常默认情况下,在程序启动时设置断点,然后您可以使用窗口顶部的按钮导航您的代码,或者如果您没有代码,您可以自定义您的视图,让您逐步完成反汇编您正在查看的二进制文件。
窗口顶部带有“{}”的按钮用于代码级步进,图标中带有“<>”的按钮用于指令级调试。因此,如果您进行正常的代码调试,您可能希望将注意力集中在左侧,而如果您正在深入了解真正的细节,则可能希望更多地关注右侧。
此外,如果你迷路了,这个图标:
这是一整本书,可能可以回答您的问题。它在 Emacs 中唯一不存在的情况是,如果您使用的是 Debian(Ubuntu 很好)并从其存储库安装了 Emacs。在这种情况下,您需要安装“ emacs<vesrsion>-common-non-dfsg
”来获取手册。(“ <version>
”是M-x version
Emacs中返回的非十进制数字)
我的观点有点偏颇,但对于调试汇编程序,最好的 GDB“前端”是 IDA(它支持与远程 GDB 目标的通信)。不过,对于源代码调试,我会推荐 KDBG。