gdb日志文件格式
当我在gdb中使用gdb日志文件格式,gdb,cgdb,Gdb,Cgdb,当我在gdb中使用set logging on时,日志文件的输出格式与我在终端屏幕上看到的格式不同。日志文件不是很可读。如何获取可读格式的日志文件 屏幕输出正常: (gdb) p foo $1 = { static npos = 18446744073709551615, _M_dataplus = { <std::allocator<char>> = { <__gnu_cxx::new_allocator<char>>
set logging 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
(gdb)p foo
$1 = {
静态NPO=18446744073709551615,
_M_dataplus={
= {
= {}, },
std::basic_string::_Alloc_hider的成员:
_M_p=0x601028“你好,世界!\n”
}
}
日志文件的输出可读性不强:
(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
^Z^Zpost提示符
^Z^Zbreakpoints头文件
^Z^Zfield 0
号码
^Z^Zfield 1
类型
^Z^Zfield 2
Disp
^Z^Zfield 3
Enb
^Z^Zfield 4
地址
^Z^Zfield 5
什么
^Z^Zbreakpoints表
^Z^Zrecord
^Z^Zfield 0
1.
^Z^Zfield 1
断点
^Z^Zfield 2
保持
^Z^Zfield 3
Y
^Z^Zfield 4
0x0000000000400961
^Z^Zfield 5
在测试中,主要是cpp:9
断点已命中1次
^Z^Zbreakpoints表结束
^Z^Zpost提示符
^Z^Z值历史记录开始1-
$1 =
^Z^Z值历史值
{
^Z^Zfield开始-
静态非营利组织
^Z^Z字段名称结束
=
^Z^Zfield值
18446744073709551615
^Z^Zfield end
,
^Z^Zfield开始-
_M_dataplus
^Z^Z字段名称结束
=
^Z^Zfield值
{
= {
= {}, },
std::basic_string::_Alloc_hider的成员:
^Z^Zfield开始*
_穆普
^Z^Z字段名称结束
=
^Z^Zfield值
0x601028“你好,世界!\n”
^Z^Zfield end
}
^Z^Zfield end
}
^Z^Z值历史结束
^Z^Zpost提示符
^Z^Zbreakpoints头文件
^Z^Zfield 0
号码
^Z^Zfield 1
类型
^Z^Zfield 2
Disp
^Z^Zfield 3
Enb
^Z^Zfield 4
地址
^Z^Zfield 5
什么
^Z^Zbreakpoints表
^Z^Zrecord
^Z^Zfield 0
1.
^Z^Zfield 1
断点
^Z^Zfield 2
保持
^Z^Zfield 3
Y
^Z^Zfield 4
0x0000000000400961
^Z^Zfield 5
在测试中,主要是cpp:9
断点已命中1次
^Z^Zbreakpoints表结束
^Z^Zpost提示符
您必须从某种IDE使用此功能,该IDE将打开MI
(机器界面)。您看到的输出是为了方便其他程序进行解析而制作的,但不是为了供人使用
MI接口也可能影响gdb.txt
log的格式,这可能是一个错误。请提出一个关于它的错误
作为一种解决方法,在IDE之外运行GDB以收集易于阅读的
GDB.txt
没错,我使用的是cgdb。当使用gdb时,日志文件就可以了。真不敢相信我在发帖之前没有试过!非常感谢@马蒂亚斯:很好,你发帖了。我也处于同样的情况