请不要回答,我应该使用ddd,nemiver,emacs,vim或任何其他前端,我只是更喜欢gdb,但希望看到带有某些终端颜色的输出。
请不要回答,我应该使用ddd,nemiver,emacs,vim或任何其他前端,我只是更喜欢gdb,但希望看到带有某些终端颜色的输出。
Answers:
您可以调整~/.gdbinit
颜色。您可以.gdbinit
在此处使用mammon's :
https://github.com/gdbinit/gdbinit
您也可以根据需要进行任意调整。我发现这个要感谢这个SO答案。这是您可以获得的输出类型:
GitHub存储库也可用:https : //github.com/gdbinit/Gdbinit
附带说明一下,同样的想法也适用于lldb。
遵循相同的概念,GDB仪表板为Python中的GDB提供了模块化的可视界面。
另一个类似的项目使用GDB的Python支持来提供更多的可扩展性,因此值得一试:https : //github.com/dholm/voidwalker
@dholm还提供了自己的.gdbinit受前一个启发。
一些项目提供了一组有用的功能,包括改进的显示。PEDA或pwndbg就是这种情况。后者给出以下描述:
PEDA替代品。本着我们的好朋友的精神
windbg
,pwndbg
宣读pwnd-bag
。
- 速度
- 弹性
- 干净的代码
它提供了类似于PEDA中的命令来支持调试和利用开发的命令,并可以更好地显示(尽管这不是项目的主要重点)。该软件仍在开发中,尚未正确发布。
该项目的说明中指出:
Voltron是面向黑客的可扩展调试器UI。它使您可以将在其他终端上运行的实用程序视图附加到调试器(LLDB或GDB),显示有用的信息,例如反汇编,堆栈内容,寄存器值等,同时仍为您提供与以前相同的调试器CLI。
您可以修改.gdbinit
以自动集成它。但是,显示本身在GDB之外(例如,在tmux分割中)。
GEF是另一种选择,它描述为:
它旨在主要由开发人员和逆向工程人员使用,目的是使用Python API向GDB提供其他功能,以在动态分析和漏洞利用开发过程中提供帮助。
set $SHOWCPUREGISTERS = 0
吗?基本上,您可以设置几个参数,并且可以随时修改代码以适合您的需求。
它不是颜色,而是考虑gdb的文本gui。它对gdb的使用方式有很大的不同。
您可以使用以下命令启动它:
gdb -tui executable.out
屏幕截图:
如您所见,主要功能是:
通过使用颜色,可以大大增强gdb的外观。这可以通过以下任何一种方法完成:
通过“设置提示”显示彩色提示。例如,使提示为粗体和红色:
set prompt \033[1;31m(gdb) \033[m
或将提示更改为新的形状(粗体和红色):
set prompt \033[01;31m\n\n#####################################> \033[0m
通过钩子着色命令
所有示例均可在以下由Michael Kelleher撰写的博客文章中找到:
即将发布的GDB 8.3的新功能!
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS
终端样式现在可用于CLI和TUI。GNU Source Highlight还可以用来提供源代码片段的样式。有关更多信息,请参见下面的“设置样式”命令。
#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
警告:越野车。没有TUI支持,“用户模式”破解。
在这里找到主要部分 并对其进行了一些修改。需要突出显示,c ++ filt。如果颜色弄乱了,请重新发出命令。
整洁,我刚刚发现使用colout的这种黑客:https : //github.com/nojhan/colout/blob/master/colout/example.gdbinit
bash: colout: command not found
当我跑步时它对我说bt f
我想强调如下:强调属于我的源文件(而不是库)的堆栈跟踪行。
解决方案是使用gdb-python(在MSYS上;在Linux上通常gdb
已经内置Python吗?),hook backtrace
,use
python stack_trace = gdb.execute('backtrace', False, True')
然后stack_trace
使用Python的正则表达式处理并打印出来。粗体和其他颜色可通过以下功能实现:
def term_style(*v):
"""1 is bold, 30--37 are the 8 colours, but specifying bold may also
change the colour. 40--47 are background colours."""
return '\x1B['+';'.join(map(str, v))+'m'
#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
此配置提供了颜色的另一种良好组合。它使检查回溯变得容易得多。要使用它,只需将该文件另存为~/.gdbinit
并正常运行gdb
您可以获得所需的任何颜色;
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal