@ArneMertz良いアイデア、ありがとう!. 私の場合、面倒な印刷の前に出力があまりないので、デバッガーを使用するとうまくいきます。printf
orcout
呼び出しにブレークポイントを設定する方法を見つけなければなりませんでした。このページに答えがありました。
printf
メイン関数に 1 つのand/or呼び出しを追加し、cout
デバッグ情報を使用してコンパイルします。
gdb program
br main
r
disas
このようなものを与えます:
Dump of assembler code for function main():
0x00000000004cdb66 <+0>: push %rbp
0x00000000004cdb67 <+1>: mov %rsp,%rbp
0x00000000004cdb6a <+4>: push %r12
0x00000000004cdb6c <+6>: push %rbx
0x00000000004cdb6d <+7>: sub $0x380,%rsp
=> 0x00000000004cdb74 <+14>: mov $0x5ae287,%edi
0x00000000004cdb79 <+19>: callq 0x4c1cf0 <puts@plt>
...
0x4c1cf0
この場合の住所はどこですかprintf
。
b *0x4c1cf0
c
...
bt
そして、スタック トレースを使用して次の printf の呼び出しに到達します。
c
一定の/alt-tab/bt
サイクルなしで、これを自動化する良い方法があればよいのですが。