GDB において特定の回数関数が呼ばれたら break する

GDB において特定の回数関数が呼ばれたら break する

[shell]
# break point を表示。番号を知る
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000413fab in scheme::VM::runLoop(scheme::Object*, __jmp_buf_tag*, bool) at src/VM-Run.cpp:982
2 breakpoint keep y 0x000000000040e240 in scheme::VM::tryJitCompile(scheme::Object) at src/VM.cpp:957
breakpoint already hit 3 times
# 2番の breakpoint において 121 回は通過し 122 回目で break するように指示
(gdb) ignore 2 121
Will ignore next 121 crossings of breakpoint 2.
(gdb) r
[/shell]

これ、初めて知りました。
ず〜っと前から、

「いや、これができないはずは無いでしょう・・・。」

と思いつつも、ず〜っと場当たり的に対処してきた問題でした。
具体的には、ローカル変数をインクリメントしつつ

[shell]
(gdb) break func if i==122
[/shell]

とかってやってました。
んなわけねぇ〜だろ!って思いながら。

2 thoughts on “GDB において特定の回数関数が呼ばれたら break する”

  1. まぁ最近はIDE使ってたから別に問題無かったんだけど、学部時代とか、Makefileなプロジェクトとかね、、、っふ。。。

Leave a Reply to krbysh Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.