gdb 日志文件格式

标签 gdb cgdb

当我在 gdb 中使用 setlogging on 时,日志文件的输出格式与我在终端屏幕上看到的格式不同。日志文件可读性不太好。如何获取可读格式的日志文件?

输出到屏幕很好:

(gdb) p foo
$1 = {
  static npos = 18446744073709551615,
  _M_dataplus = {
    <std::allocator<char>> = {
      <__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
    members of std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider:
    _M_p = 0x601028 "Hello World!\n"
  }
}

日志文件的输出不太可读:

^Z^Zpost-prompt

^Z^Zbreakpoints-headers

^Z^Zfield 0
Num     
^Z^Zfield 1
Type           
^Z^Zfield 2
Disp 
^Z^Zfield 3
Enb 
^Z^Zfield 4
Address            
^Z^Zfield 5
What

^Z^Zbreakpoints-table

^Z^Zrecord

^Z^Zfield 0
1       
^Z^Zfield 1
breakpoint     
^Z^Zfield 2
keep 
^Z^Zfield 3
y   
^Z^Zfield 4
0x0000000000400961 
^Z^Zfield 5
in main at test.cpp:9
        breakpoint already hit 1 time

^Z^Zbreakpoints-table-end

^Z^Zpost-prompt

^Z^Zvalue-history-begin 1 -
$1 = 
^Z^Zvalue-history-value
{

^Z^Zfield-begin -
static npos
^Z^Zfield-name-end
 = 
^Z^Zfield-value
18446744073709551615
^Z^Zfield-end
, 

^Z^Zfield-begin -
_M_dataplus
^Z^Zfield-name-end
 = 
^Z^Zfield-value
{
    <std::allocator<char>> = {
      <__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
    members of std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider: 

^Z^Zfield-begin *
_M_p
^Z^Zfield-name-end
 = 
^Z^Zfield-value
0x601028 "Hello World!\n"
^Z^Zfield-end

  }
^Z^Zfield-end

}

^Z^Zvalue-history-end

^Z^Zpost-prompt

^Z^Zbreakpoints-headers

^Z^Zfield 0
Num     
^Z^Zfield 1
Type           
^Z^Zfield 2
Disp 
^Z^Zfield 3
Enb 
^Z^Zfield 4
Address            
^Z^Zfield 5
What

^Z^Zbreakpoints-table

^Z^Zrecord

^Z^Zfield 0
1       
^Z^Zfield 1
breakpoint     
^Z^Zfield 2
keep 
^Z^Zfield 3
y   
^Z^Zfield 4
0x0000000000400961 
^Z^Zfield 5
in main at test.cpp:9
        breakpoint already hit 1 time

^Z^Zbreakpoints-table-end

^Z^Zpost-prompt

最佳答案

您必须在某种 IDE 中使用它,该 IDE 打开 MI(机器接口(interface))。您看到的输出是为了便于其他程序解析,而不是供人类使用。

MI 接口(interface)可能还会影响 gdb.txt 日志的格式,这可能是一个错误。请提交有关它的错误 here .

作为解决方法,请在 IDE 外部运行 GDB 以收集易于阅读的 gdb.txt

关于gdb 日志文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862210/

相关文章:

linux - 如何使 "next"在 cgdb 中工作

gdb - gdb 如何重建 C++ 的堆栈跟踪?

colors - 如何在带有TUI或CGDB的GDB中使用颜色?

c++ - 如何在 OSX 10.9 上的 GDB 中打印 C++ vector 的元素?

assembly - 汇编jmp内存表达式

macos - 如何让cgdb显示汇编代码?

linux - 使用 gdb 列出 Linux 核心转储进程下的所有进程和线程

c++ - GDB 步骤(输入)不适用于 std::string

c - 解释 gdb 输出

debugging - GDB:如何查看哪些内存地址是可访问的?