如何在交互式调试期间突出显示gdb输出并为其着色? 请不要回答,我应该使用DDD、NIVER、Emacs、VIM或任何其他前端,我只喜欢GDB,但希望看到它的输出具有一些终端颜色。 < P>这不是颜色,而是考虑GDB的。它对gdb的可用性有很大的影响

如何在交互式调试期间突出显示gdb输出并为其着色? 请不要回答,我应该使用DDD、NIVER、Emacs、VIM或任何其他前端,我只喜欢GDB,但希望看到它的输出具有一些终端颜色。 < P>这不是颜色,而是考虑GDB的。它对gdb的可用性有很大的影响,gdb,terminal,colors,Gdb,Terminal,Colors,您可以通过以下方式启动它: gdb -tui executable.out 截图: 如您所见,主要功能包括: 显示源的哪一行以及周围的行 显示断点 我知道你不想要前端。 但是它离gdb很近,怎么样, 它是textmode,但上面有一个源窗口,代码上有语法高亮显示 你可以得到你想要的任何颜色 # gdb (gdb) shell echo -en '\E[47;34m'"\033[1m" ... anything is now blue foreground and white backgro

您可以通过以下方式启动它:

gdb -tui executable.out
截图:

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

  • 显示源的哪一行以及周围的行
  • 显示断点

    • 我知道你不想要前端。 但是它离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的外观。这可通过以下任一方法完成:

    • 通过“设置提示”显示彩色提示。例如,将提示设置为粗体和红色:

      设置提示\033[1;31m(gdb)\033[m

      或者将提示设置为新的粗体和红色形状:

      [码>码码>码码码>集码提示\033[01;31 M\31码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码码\033[0m

    • 通过挂钩的彩色命令

    • “list”命令的彩色语法高亮显示
    • 迈克尔·凯勒赫(Michael Kelleher)撰写的以下博客文章提供了所有示例:

      警告:错误。不支持TUI,“用户模式”黑客

      找到了主要部分
      并对其进行了一点修改。需要突出显示,c++过滤。如果颜色弄乱,请发出重新命令。

      cgdb
      gdb-tui

      .gdbinit好得多 你可以调整你的
      ~/.gdbinit
      使其具有颜色。你可以使用mammon的
      .gdbinit
      ,它在这里提供:

      你也可以随心所欲地调整它。我发现这多亏了。以下是你可以获得的输出:

      GitHub存储库也可用:

      另一方面,同样的想法也被采纳了

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

      (无效)沃克 另一个类似的项目使用GDB的Python支持来提供更多的可扩展性,因此值得一看:

      @多尔姆还提供了他自己的灵感来自上一个

      pwndbg 有些项目提供了一组有用的功能,包括改进的显示。or就是这种情况。后者给出了以下说明:

      PEDA的替代品。本着我们好朋友的精神,
      windbg
      pwndbg
      发音为
      pwnd bag

      • 速度
      • 弹性
      • 干净代码
      它提供了与PEDA类似的命令来支持调试和开发,并提供更好的显示(尽管这不是本项目的主要重点)。该软件仍在开发中,尚未正式发布

      伏特龙 该说明指出:

      Voltron是一个可扩展的黑客调试器用户界面。它允许您 将在其他终端中运行的实用程序视图附加到调试器(LLDB 或GDB),显示反汇编、堆栈等有用信息 内容、寄存器值等,同时仍提供相同的 你已经习惯了

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

      全球环境基金 是另一个选项,描述如下:

      它的目标主要是供开发者和逆向工程师使用,以 使用pythonapi为GDB提供额外的特性以提供帮助 在动态分析和开发过程中


      我想强调如下:强调属于源文件(而不是库)的堆栈跟踪行

      解决方案是使用gdb-python(在MSYS上;在Linux上通常
      gdb
      已经内置了python?),hook
      backtrace
      ,使用

      python stack_trace = gdb.execute('backtrace', False, True')
      
      然后使用Python的正则表达式处理堆栈跟踪,并将其打印出来。粗体和其他颜色通过以下函数实现:

      def term_样式(*v):
      “1为粗体,30--37为8种颜色,但指定粗体也可能
      改变颜色。40--47是背景色
      返回'\x1B['+';'.join(map(str,v))+'m'
      #这样使用:
      打印术语样式(1)+'这将是粗体'+术语样式(0)#重置。
      打印term_样式(1,30)+“这将是粗体和彩色的”+term_样式(0)
      打印术语样式(1,30,40)+“加彩色背景”+术语样式(0)
      
      太好了,我刚刚用colout找到了这个黑客:


      另一个很好的颜色组合是由提供的。它使检查回溯更加容易。要使用它,只需将该文件另存为
      ~/.gdbinit
      并正常运行gdb

      即将推出的gdb 8.3!

      终端样式现在可用于CLI和TUI.GNU源 突出显示还可以用于提供源代码的样式 有关详细信息,请参见下面的“设置样式”命令


      它不会给你颜色(所以我不会把这称为答案),但一些~/.gdbinit配置将改善体验。我使用它作为最低要求:设置历史记录在设置时保存打印漂亮设置输出基数16设置高度0一旦在
      l
      上突出显示当前行,我只需将
      l
      添加到
      hook stop
      并进入Dev Nirvana。哇!谢谢!我一直在寻找一个long是时候在gdb周围创建一个漂亮的图形shell了,我已经尝试过xxgdb、kgdb和ddd,但是它们都不适合我,所以我一直坚持使用普通的旧命令行界面。但是这绝对是完美的!Ctrl-x Ctrl-a:输入这个可以切换到文本gui模式,甚至在没有命令行选项的情况下也可以工作。从这个程序为我破坏了界面。有什么问题吗
      python stack_trace = gdb.execute('backtrace', False, True')