1. ホーム
  2. gdb

[解決済み] GDBのブレークポイントを、指定された回数だけブレークさせるには?

2023-04-10 14:39:18

質問

ある関数が大量に呼び出され、最終的にセグメンテーションフォールトを起こすことがあります。

しかし、私はこの関数にブレークポイントを設定し、それが呼び出されるたびに停止したくありません。

を設定すればいいと聞いたことがあります。 counter を設定すると、ブレークポイントがヒットするたびにカウンタがデクリメントされ、そのカウンタがトリガされるのは counter = 0.

これは正確なのでしょうか、もしそうならどうしたらいいのでしょうか。そのようなブレークポイントを設定するための gdb コードを教えてください。

どのように解決するのですか?

読む 5.1.6項 を読んでください。やるべきことは、まずブレークポイントを設定し、そのブレークポイント番号に「無視回数」を設定することです、例えば ignore 23 1000 .

ブレークポイントを何回無視すればいいのかわからない、手作業で数えたくない場合は、次のようにするとよいでしょう。

  ignore 23 1000000   # set ignore count very high.

  run                 # the program will SIGSEGV before reaching the ignore count.
                      # Once it stops with SIGSEGV:

  info break 23       # tells you how many times the breakpoint has been hit, 
                      # which is exactly the count you want