请不要回复我应该使用ddd,nemiver,emacs,vim或任何其他前端,我只是更喜欢gdb,但希望看到它的输出与一些终端颜色。如何在交互式调试过程中突出显示和着色gdb输出?
回答
.gdbinit更好
你可以调整~/.gdbinit
有颜色。您可以使用钱财的.gdbinit
这可以在这里找到:
https://github.com/gdbinit/gdbinit
你可以调整你想太多也不亚于。我发现这要归功于this SO answer。下面是你可以得到的输出类型:
一个GitHub的仓库也可以:https://github.com/gdbinit/Gdbinit
在一个侧面说明,同样的想法也applied to lldb。
GDB控制板
遵循相同的概念,GDB Dashboard提供GDB在Python模块化可视界面。
(无效)步行者
另一个类似项目采用GDB的Python的支持,以提供更多的可扩展性,所以这是值得一试:https://github.com/dholm/voidwalker
@dholm还提供了从激发了他自己的.gdbinit前一个。
pwndbg一些项目提供一组有用的功能,包括改进的显示。这是PEDA或pwndbg的情况。后者给出以下描述:
PEDA替换。本着我们的好朋友
windbg
的精神,pwndbg
的发音为pwnd-bag
。
- 速度
- 弹性
- 清洁代码
它提供了支持调试和利用类似于从PEDA的那些发展,更好的显示效果(虽然这不是主要的命令项目重点)。该软件仍在开发中,尚未正式发布。
战神金刚project的描述中指出:
战神金刚为黑客一个可扩展的调试器UI。它允许你在你的调试器(LLDB 或GDB)上运行在其他终端上运行的实用程序视图 附加实用程序视图,显示有用的信息,如反汇编,堆栈 内容,寄存器值等,同时仍然给你相同的 调试器CLI习惯于。
您可以修改您的.gdbinit
以自动整合它。但是,显示器本身不在GDB之中(例如在tmux分割中)。
GEF
GEF是另一种选择,它被描述为:
其目的是要通过剥削主要用于和反向工程师, 提供附加特征到GDB使用Python API在动态分析和利用开发过程中协助 。
这不是颜色,但考虑gdb的text gui。它对gdb的可用性有着巨大的影响。
你可以启动它:
gdb -tui executable.out
截图:
正如你所看到的,主要特点是:
- 显示了源线我们在和周围的线
- 显示断点
哇!谢谢!我一直在寻找一个很棒的gdb图形外壳,我已经尝试过xxgdb,kgdb和ddd,但是它们都不是很适合我,所以我坚持使用普通的旧命令行界面。但这绝对是完美的! – 2009-01-10 19:47:06
Ctrl-x Ctrl-a:输入此项以切换文本gui模式,即使没有命令行选项也可以使用。 – jturcotte 2010-11-05 14:10:17
从程序打印到标准输出打破了我的界面。除了重定向它之外的任何解决方法? – 2015-05-09 09:25:27
我知道你不想要前端。 但是cgdb如何与gdb非常接近, 它是textmode,但上面有一个源代码窗口,代码上带有语法高亮显示。
你可以得到你想要的任何颜色;
# 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
通过使用颜色可以大大增强gdb的出现。这可以通过以下任何方法完成:
- 通过“设置提示符”进行彩色提示。例如,使提示变为粗体和红色:
set prompt \033[1;31m(gdb) \033[m
- 通过钩子的彩色命令
- “list”命令的彩色语法高亮显示。
所有的例子都可以在由迈克尔·凯莱赫写了下面的博客文章:
"Beautify GDB", May 12, 2010 (via archive.org)
"Experimental GDB syntax highlighting", May 15, 2010 (via archive.org)
#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支持,'用户模式'破解。
找到主要部分here 并修改了一下。需要突出显示,C++ filt。如果颜色混乱问题重新命令。
cgdb
比gdb -tui
我想强调如下:强调堆栈跟踪的属于我的源文件中的行(而不是库)。
的解决方案是使用GDB-蟒蛇(上MSYS;在Linux通常gdb
Python自带内置了吗?),勾backtrace
,使用
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)
整洁,我只是发现使用colout这个技巧:https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
颜色的另一个很好的组合是由this configuration给出。它使检查回溯变得容易很多。要使用它,只需将该文件保存为~/.gdbinit
并正常运行gdb
- 1. 如何调用交互式程序并立即显示输出
- 2. 如何在Pycharm中打开语法突出显示/着色
- 3. 着色/突出显示崇高文字
- 4. 如何使用列和行值突出显示/着色表td?
- 5. 永久在交互式报表上突出显示行APEX
- 6. 突出显示与颜色相交
- 7. 调试程序(gdb)的块输出
- 8. 交互式TCL外壳在cygwin中没有显示输出
- 9. 如何以编程方式设置UIButton的突出显示色调颜色?
- 10. Vim语法着色:如何仅突出显示长线?
- 11. 在ls命令中着色突出显示
- 12. Solr突出显示的色调字段
- 13. Linux C:交互式输出
- 14. 在Php MS中调用存储过程和显示输出Sql
- 15. 如何为超过特定数量的代码/突出显示值着色?
- 16. 如何启用输出突出显示为xdebug模式?
- 17. Phonegap黄色突出显示
- 18. StartActivity()红色突出显示
- 19. 如何在Netbeans的调试过程中更改线突出显示的背景颜色?
- 20. 如何在html输出中禁用突出显示
- 21. YADR和Vim突出显示颜色
- 22. 突出显示崇高文本中的着色
- 23. 如何管理交互式shell的输入和输出?
- 24. 如何启用zsh 5.0突出显示和着色的命令行?
- 25. 在调试模式下更改突出显示的行的颜色
- 26. iOS - UIButton显示突出显示颜色
- 27. 如何在Winform中通过编程来突出显示listviewitem?
- 28. 在gdb中调试应用程序输出问题
- 29. gdb在启动过程中显示“程序退出”
- 30. 着色ifort输出
它不会给你颜色(所以我不会称这为答案),但一些〜/ .gdbinit配置将改善体验。我用这个作为最低限度: 集历史节省 集打印漂亮 组输出基数16 设定高度0 – 2008-11-19 19:35:37
这将是很好的改变公认的答案,所以我老了,不正确的答案可以被删除。谢谢。 – ddaa 2014-11-20 09:00:58
一旦突出显示`l`上的当前行被执行https://sourceware.org/bugzilla/show_bug.cgi?id=21044,我将`l`加入`hook-stop`并输入Dev Nirvana。 – 2017-08-02 07:38:37