0

これは、gdb コンソールから直接のサンプル セッションです。

Starting program: 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, 0x00000000025654f0 in ~F()
(gdb) bt
#0  0x00000000025654f0 in ~F()
    at hello.cpp:123
(gdb) c
Continuing.
foo.cpp:122:12: runtime error: member call on null pointer of type 'Object'

ここに私の.gdbinitファイルがあります

set pagination off
set language c++
set print pretty on
set logging file gdb.txt
set logging on

break ~F()
info breakpoints
r
bt
c
set logging off
quit

生成された gdb.txt は次のようになります。

Breakpoint 1 at 0x25654f0
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x00000000025654f0 <~F()>
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, 0x00000000025654f0 in ~F()
#0  0x00000000025654f0 in ~F()
....

Breakpoint 1, 0x00000000025654f0 in ~F()

foo.cpp:122:12: runtime error: member call on null pointer of type 'Object'ログに出てくる様子がありません。それをログに記録するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

そのメッセージは、gdb からではなく、プログラムからのものです。

これを機能させる 1 つの方法は、プログラムと gdb を同じログに書き込むことです。ここでの唯一の秘訣は、両方が「追加」モードで書き込んでいることを確認することです。これには「set logging」サブコマンドがあり、プログラムでは次のように実行できます。

(gdb) run >> log
于 2013-07-31T02:01:05.547 に答える