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>>

当我在gdb中使用
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时,日志文件就可以了。真不敢相信我在发帖之前没有试过!非常感谢@马蒂亚斯:很好,你发帖了。我也处于同样的情况