学习GDB命令在我的清单中,但是与此同时,是否有用于* nix平台的图形调试器可以接受Windbg命令,并且具有类似的功能?例如,能否显示多个可编辑的内存窗口,在步进时自动在区域周围反汇编,设置反汇编样式以及使窗口具有包含可编辑值的寄存器的功能?

评论

@AshRj啊,我明白你的意思了。我的错,很抱歉。

Voltron是全新的,但似乎很有前途(我尚未对其进行测试)。

关于SO:stackoverflow.com/questions/79023/…

#1 楼

我启动了自己的gdb前端gdbgui,它是一个服务器(使用python),可让您在浏览器中访问功能齐全的前端。



安装

pip install gdbgui --upgrade


,或在gdbgui.com上下载

可在所有平台(Linux,macOS和Windows)以及具有JavaScript的浏览器上工作。

运行

只需在终端中输入

gdbgui


,浏览器就会打开一个新选项卡。

功能


设置/删除断点
查看源代码,并带有可选的嵌入式机器代码代码
创建/探索变量
查看/选择线程
探索内存
查看寄存器
完整的gdb终端功能,因此您可以发送传统的gdb命令,并查看gdb /下级程序输出
布局受到令人惊叹的Chrome调试器的启发
与Mozilla的RR兼容,用于反向调试


评论


确实,这是一项不错的工作。设计进入了平均用例的核心。我喜欢。它还支持远程调试(或者更确切地说,它支持使用目标远程主机:port gdb命令。做得很好。也许在菜单中添加连接远程主机的功能将是一个不错的选择。缩小“寄存器”的大小?所有信息都可用,但是(至少在ARM上)您无法一次看到所有寄存器,因此必须滚动。

– sherrellbc
19-3-7在11:06



这里的注释不适用于单独的gdbgui支持。请在sx上打开一个新问题,或使用gdbgui支持渠道/错误跟踪器。

–乔纳斯·斯坦(Jonas Stein)
19年11月21日在21:44

#2 楼

尽管有些人并不在意它的界面,但值得一提的是GDB也具有自己的内置GUI(称为TUI)。

您可以使用以下命令以GUI模式启动GDB:gdb -tui

可以在这里找到有关TUI命令的快速参考:http://beej.us/guide/bggdb/#qref

#3 楼

我通常将Emacs GUD用作GDB前端。

它具有多个不同的视图,您可以从顶级GDB菜单访问这些视图:



它还允许诸如允许您通过将鼠标悬停在值上来检查值的细微之处:



要使用它,首先需要使用C-x C-f导航到二进制文件的文件夹,然后M-x gdb(即“ Alt + X”,然后键入“ gdb”)。完成此操作后,您可以键入gdb命令行,或直接按[Enter]接受其默认值。从那里,您只需在gdb窗口中输入要传递给要调试的程序的参数“开始”。屏幕顶部“ GUD”下的菜单将使您可以打开其他相关视图以进行调试。 (框架是单独的窗口,“ Windows”是框架内的窗口)

通常默认情况下,在程序启动时设置一个断点,然后您可以使用顶部的按钮浏览代码窗口,或者如果没有代码,则可以自定义视图,以逐步分解正在查看的二进制文件。

窗口顶部的按钮用“ {}”用于代码级步进,其图标中带有“ <>”的按钮用于指令级调试。因此,如果您要进行常规的代码调试,则可能希望集中在左侧,如果您进入真正的坚韧不拔,您可能希望集中在右侧。

此外,如果您迷路了,此图标:



这是一本完整的书,可能会回答您的问题。它在Emacs中唯一不存在的时间是,如果您使用的是Debian(Ubuntu很好)并从其存储库中安装了Emacs。在这种情况下,您将需要安装“ emacs<vesrsion>-common-non-dfsg”以获取手册。 (其中“ <version>”是Emacs中M-x version返回的非十进制数字)

评论


这是Spacemacs而不是GNU Emacs对吗?

–bertfred
16-10-12在9:39

不。这是简单的'ol GNU Emacs,我只是以我的样式看起来像这样。我上面提到的内容都没有特定于我的配置。 (实际上,Spacemacs也是一组Emacs配置,但是我不知道它是否会改变GDB的用法)

–地衣
16-10-12在16:34

那不是股票Emacs。您正在运行什么操作系统和软件包?

–mrbean
10月16日22:46

看起来您已经安装了Power Line软件包。 emacswiki.org/emacs/PowerLine

–mrbean
10月16日23:11

@mrbean在Linux Mint上,是的,我想我在2013年的Emacs主题是PowerLine的base16-明天(很好的认识!)

–地衣
10月18日,下午1:39

#4 楼

我的看法有点偏颇,但是对于调试汇编器而言,最好的GDB“前端”是IDA(它支持与远程GDB目标的通信)。但是,对于源代码调试,我建议使用KDBG。

评论


我实际上建议在远程GDB上使用IDA的linux_server,因为它使用的是二进制协议而不是基于文本的协议,因此它功能更强大,速度更快。

–伊戈尔·斯科钦斯基♦
13年4月2日在4:11

请说明您的建议。答案不仅是为OP写的,而且是为将来可能遇到此问题的所有其他人写的。

–asheeshr
13年5月9日在1:53

基本上是因为您具有IDA的所有功能(插件,IDAPython脚本,已知的GUI等),而不仅仅是GDB的前端。

– joxeankoret
13年5月10日在6:37

#5 楼

即使冒着严重降低表决权的风险,我也想支持普通的旧gdb提示,并建议不要使用GUI前端。几年前,我通过阅读《调试的艺术》开始学习GDB的更高级用法。它描述了GDB和DDD以及Eclipse作为GDB的前端。

在大多数情况下,我在终端和tmux(早期的screenbyobu)上使用Vim作为我的IDE。因此,我在终端多路复用器的窗格之间切换,以在代码和调试器之间快速切换。在尝试了TUI几周后,GDB提示确实满足了我所希望的一切,并且应记住,您可以多次将同一个进程附加到该进程上(从而以描述方式查看内存)。

似乎所有前端都滞后了一点-毫不奇怪-与GDB提示及其细腻和奇怪之处融洽相处更有意义。请记住,在裸机设置上,这可能是您唯一的选择。因此,即使您按照自己的标准找到了一个“不错的” GUI,也有必要进行学习。 ,甚至仅从命令行即可。

如果您绝对坚持使用GUI前端,我也推荐IDA Pro,原因很简单,因为它为您提供了用于各种调试器的单个前端,并且您只需学习(或自定义)其快捷方式一次。缺点:如果您在特定计算机上没有许可证,或者无法通过隧道传输到GDB服务器等,则价格和灵活性不佳...


我不知道任何接受WinDbg命令的GDB前端。我只能再次强调:无论如何,您都将收获学习香草GDB所花费的时间。不要回避努力。 WinDbg中有很多事情与Windows的工作方式,Windows内核的工作等等有关。 GDB更为通用。

#6 楼

我想建议DDD。

如果您有源代码,则应查看QTCreator。如果您熟悉它的调试器,则类似于Visual Studio。

评论


我用过DDD,却不是粉丝。我会退房QtCreator,谢谢!

–mrduclaw
13年3月30日在2:41

DDD非常适合显示数据结构,您可以将它们布置在板上(各种轻型表)。因此,数据显示调试器。

–罗马Plášil
16年8月2日在7:00

乍一看,DDD看起来很奇怪而且已经过时了,但是它确实很强大。

–亚历山大
18/12/13在9:19

#7 楼

不是GUI,而是一个很好的替代品,一旦您习惯了它(我个人认为对于大多数东西来说它更快)-> https://github.com/gdbinit/Gdbinit。

我记得我刚开始的时候* nix反转,我不得不第一次面对gdb。讨厌它,而+ mammon original的gdbinit挽救了我的一天。如今,我比大多数GUI调试器更喜欢gdb。

尝试一下:-)

全面披露:我是该工具的作者。

评论


您应该写一份声明,说Gdbinit是您要维护的软件...

–烛光
2013年4月2日13:00

所以?它是免费的,任何人都可以使用。不完全是想在这里卖东西。真是的

– fG-
2013年4月3日在3:24

@ fg-仍然可能是一些广告,这些广告不是基于经验,而是完全基于您编写该工具的事实。

–heinrich5991
13年4月6日在20:17

因此,您无法宣传可以解决问题的有用工具,而不得不等待其他人去做呢?对于解决问题的“社区”来说,这是一种非常奇怪的思维方式。

– fG-
13年4月8日在9:59

@ fG-请阅读常见问题解答:reverseengineering.stackexchange.com/faq#promotion

–烛光
13年4月11日在12:28

#8 楼

我不太喜欢DDD,它的GUI上是90年代。

我想推荐KDBG,它是gdb的KDE前端。
此外,您可能想要使用看看Cgdb,它是gdb的curses扩展。

我最近遇到Nemiver,它看起来非常有前途。

评论


在没有源代码的情况下,KDBG是否也能很好地用于拆卸和调试?他们的屏幕截图仅显示源代码。

–mrduclaw
13年3月30日在17:25

我不知道,以前从未尝试过...

–烛光
13年3月30日在17:35

“它的GUI中有90年代” ...更像是80年代

– Torvin
2014年10月31日在21:43



GUI的外观是唯一的缺点吗?

–太阳神
15年12月18日在18:31

#9 楼

如果您使用Vim,cgdb也是一个不错的选择。

cgdb与vim共享许多命令,例如regex search和许多其他命令。在cgdb主页上:


键盘界面是根据vim建模的,因此vim用户应该使用cgdb感到宾至如归。


#10 楼

在编写代码时,我通常在CLI模式下使用Vim + gdb。但有时最好使用GUI。

除了提到的选项外,另一个选项是Code :: Blocks。它使用GDB和CDB作为后端。对于GDB,您可以选择AT&T,Intel或定制进行拆卸。它支持混合模式以及纯指令列表。您可以进一步设置它以评估光标等下的变量(以代码形式)。

只有一个内存转储窗口,但是您还可以在底部的命令行中输入原始GDB命令,并将其打印到窗口–因此例如内存转储。

它具有用于CPU寄存器的单独窗口,它们不能直接编辑,但是可以通过提及的命令行设置值以及其他值:

set $eax = 123
set var xyz = 'q'


下图显示了它在KVM上进行源代码调试时的作用(打开链接以查看较大格式的文件)。

我遇到的一个问题是一些GUI错误等。在Ubuntu 12 – UB 12上运行时,版本为10.10。但是,当前版本12.11的编译和安装很轻松。

例如用于自定义安装路径安装(如果您的发行版没有最新版本,并且您希望同时拥有这两个版本):


#11 楼

Dobbs博士的这篇文章详细显示了在Linux OS上进行调试的GUI。我建议基于Linux环境的称为GDB调试的Qt-Creator。无论如何,本文仅回顾调试C ++代码,但这足以展示GDB的调试功能。

#12 楼

我将推荐UltraGDB,它是GDB GUI前端和基于Eclipse技术的轻量级IDE。

#13 楼

有Affnic调试器GUI。它不是免费的,但是存在一个精简版。它适用于Windows,Linux和MacOS。

从官方网站


Affinic Debugger GUI .aka。 ADG被设计为各种调试器的图形用户界面。此构建专门针对GNU GNU调试器。借助图形窗口,ADG可以通过在一个视图中查看多种类型的信息并轻松单击操纵调试器来释放调试器的全部功能。 ADG还提供了一个集成的命令终端,供用户直接输入调试器命令。 ADG在Linux / Windows / Mac OS X上可用。


#14 楼

VisualStudio.Code(VS.Code)在Linux上运行,并具有“本机调试”扩展名,可让您使用gdb。它具有非常敏感的用户界面。资源非常少。对于C ++开发人员,这种体验在某种程度上类似于Windows上的Visual Studio(尽管没有汇编视图)。开箱即用的主要调试快捷方式相同(F5,Shift-F5,F10,F11)。

安装只需双击(一个安装VS.Code,另一个安装扩展名) ),非常适合那些来自Windows Visual Studio并希望立即变得高效的人。

#15 楼

有Voltron,这是一个可扩展的Python调试器UI,它支持LLDB,GDB,VDB和WinDbg / CDB(通过PyKD),并在macOS,Linux和Windows上运行。对于前三个,它支持x86,x86_64和lldb甚至具有arm64支持的手臂,同时还为gdb添加了powerpc支持。 /github.com/snare/binjatron-允许同步视图。

#16 楼

请注意,以下内容仅适用于源代码调试。

CLion是使用IDEgdb。您仍然可以键入命令,但是许多功能已在GUI中无缝实现,例如单步执行,查看当前活动变量和设置breakpoints。阅读更多here

#17 楼

您可以使用GDBFrontend。
这是一个非常容易被破解的GDB前端。

完全公开:我是开发者。