如何在交互式调试期间突出显示和着色gdb输出?

elm*_*rco 165 terminal gdb colors

请不要回复我应该使用ddd,nemiver,emacs,vim或任何其他前端,我只是喜欢gdb,但希望看到它的输出带有一些终端颜色.

Ben*_*enC 178

.gdbinit

你可以调整你的~/.gdbinit颜色.您可以使用以下.gdbinit可用的mammon :

https://github.com/gdbinit/gdbinit

您可以根据需要调整它.我发现这要归功于这个答案.这是您可以获得的输出类型:

.gdbinit

GitHub存储库也可用:https://github.com/gdbinit/Gdbinit

另外,同样的想法也适用于lldb.

GDB仪表板

遵循相同的概念,GDB Dashboard为Python中的GDB提供了模块化可视化界面.

GDB仪表板

(空隙)步行者

另一个类似的项目使用GDB的Python支持来提供更多的可扩展性,因此值得一试:https://github.com/dholm/voidwalker

@dholm还提供了自己的.gdbinit,灵感来自前一个.gdbinit.

(空隙)步行者

pwndbg

一些项目提供了一组有用的功能,包括改进的显示.PEDApwndbg就属于这种情况.后者给出了以下描述:

PEDA替代品.在我们的好朋友的精神windbg,pwndbg发音pwnd-bag.

  • 速度
  • 弹性
  • 清洁代码

它提供了支持调试和利用开发的命令,类似于PEDA的开发,并且更好地显示(尽管这不是项目的主要焦点).该软件仍在开发中,尚未正确发布.

pwndbg

战神金刚

项目的说明中指出:

Voltron是黑客可扩展的调试器UI.它允许您将在其他终端中运行的实用程序视图附加到调试器(LLDB或GDB),显示有用的信息,如反汇编,堆栈内容,寄存器值等,同时仍然提供您习惯使用的相同调试器CLI.

您可以修改.gdbinit自动集成它.但是,显示器本身位于GDB之外(例如,在tmux拆分中).

战神金刚

GEF

GEF是另一种选择,它被描述为:

它主要由开发人员和逆向工程师使用,使用Python API为GDB提供额外的功能,以便在动态分析和利用开发过程中提供帮助.

GEF


Joh*_*ter 95

这不是颜色,但考虑gdb的文字gui.它对gdb的可用性有很大的不同.

你可以用以下方式启动它:

gdb -tui executable.out
Run Code Online (Sandbox Code Playgroud)

截图:

在此输入图像描述

如您所见,主要功能包括:

  • 显示我们所在的源线和周围的线
  • 显示断点

  • Ctrl-x Ctrl-a:输入此项以切换到文本gui模式,即使没有命令行选项也可以. (44认同)
  • 哇!谢谢!我一直在寻找一个很好的图形shell围绕gdb,我已经尝试过xxgdb,kgdb和ddd,但它们都没有对我有用,所以我坚持使用普通的旧命令行界面.但这绝对是完美的! (5认同)
  • 打开第二个终端,然后发出命令: $ tty 使用 (gdb) set lower-tty 命令将结果从 gdb 会话定向到该终端。前任。从我的.gdbinit设置inferior-tty /dev/tty2现在你的标准输出不会弄乱$gdb -tui。 (3认同)
  • 从程序打印到标准输出打破了我的界面。除了重定向之外还有其他解决方法吗? (2认同)
  • 我也遇到了同样的问题,stdout 破坏了接口。Ctrl-L 或任何您的重绘绑定至少使它可用。对于启用了 vi 编辑模式的人来说,Ctrl-X Ctrl-A 不起作用,但命令“layout src”将使您进入 TUI 模式,源代码如图所示。 (2认同)

Joh*_*han 44

我知道你不想要一个前端.但是cgdb如何与gdb非常接近,它是textmode但是上面有一个源窗口,代码中有语法高亮显示.

  • sudo apt-get install cgdb (2认同)
  • 一个真正的意外发现:) (2认同)

Mik*_*ike 19

通过使用颜色可以大大增强gdb的出现.这可以通过以下任何方法完成:

  1. 通过"设置提示"进行彩色提示.例如,将提示符设为粗体和红色:

    set prompt \033[1;31m(gdb) \033[m

    或者提示一个新的形状,粗体和红色:

    set prompt \033[01;31m\n\n#####################################> \033[0m

    在此输入图像描述

  2. 通过钩子着色命令

  3. "list"命令的彩色语法高亮显示.

所有示例都可以在Michael Kelleher撰写的以下博客文章中找到:

"Beautify GDB",2010年5月12日(通过archive.org)

"实验性GDB语法突出显示",2010年5月15日(通过archive.org)

  • 链接坏了. (14认同)
  • @Mike:在这里发布这些链接的内容会很有用,因为该网站不再可访问,robots.txt阻止了archive.org对其进行索引. (7认同)

ftk*_*ftk 7

#into .gdbinit
shell mkfifo /tmp/colorPipe

define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-disassemble
hookpost-list
end 

define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-list
set logging off 
set logging redirect off 
shell sleep 0.1s
end 

define hook-quit
shell rm /tmp/colorPipe
end 

define re
hookpost-disassemble
echo \033[0m
end 
document re
Restore colorscheme
end 
Run Code Online (Sandbox Code Playgroud)

警告:越野车.没有TUI支持,'用户模式'黑客.

这里找到主要部分 并对其进行了一些修改.需要突出,c ++ filt.如果颜色搞砸了问题re.


小智 7

cgdb 好多了 gdb -tui


elm*_*rco 5

整洁,我刚刚使用colout发现了这种黑客攻击:https : //github.com/nojhan/colout/blob/master/colout/example.gdbinit

之前-之后


elm*_*rco 5

New in upcoming GDB 8.3!

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS

Terminal styling is now available for the CLI and the TUI. GNU Source Highlight can additionally be used to provide styling of source code snippets. See the "set style" commands, below, for more information.

gdb 8.2.91.20190401-23.fc30的屏幕截图

  • 注意:仅*源代码*样式需要使用源代码突出显示进行编译,自 GDB 8.3 起,界面的其余部分默认为彩色。另请注意,[自 GDB 10.1](https://github.com/bminor/binutils-gdb/commit/f6474de9aacec990d44d2d65a337668b389efd99) 开始,如果安装了 Pygments Python 包,您将获得源代码突出显示。无需使用源代码突出显示来编译 GDB! (2认同)