当我在 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/