5

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
4

1 に答える 1

7

これは、オンになっているある種のIDE MI(マシンインターフェイス)から使用している必要があります。表示される出力は、別のプログラムで簡単に解析できるように作成されていますが、人間が使用するためのものではありません。

MIインターフェイスがログの形式にも影響を与えるのはバグである可能性がありgdb.txtます。ここでバグを報告してください

回避策として、IDEの外部でGDBを実行して、読みやすいものを収集しますgdb.txt

于 2010-10-09T02:21:40.687 に答える