6

GDBを使用すると、変更がwatch i発生するたびに中断できiます。問題は、名前を使用する複数の関数があるiため、GDBがそれらすべての関数の内部に侵入することです。

変更されるたびに中断することは可能iですか?ただし、特定の関数内でのみ可能ですか?

4

1 に答える 1

6

あなたはグローバル変数を見ていると思います。したがって、この変数が変更されたすべての関数で停止します。これは論理的で予想される動作です。変更するたびに特定の関数内でのみブレークしたい場合はi、のブレークポイントを設定しないでiください。代わりに、目的の関数にブレークポイントを設定します。このブレークポイントにヒットしたら、目的の関数で変更されたときに次のブレークポイントにヒットすることが確実になるようにウォッチを設定します(可能な再帰などを無視します)ii

特定の関数のスコープに入るまでローカル変数にブレークポイントを設定できないため、同じ名前のすべての関数内のローカル変数を監視していない可能性があると思います。

于 2012-05-08T15:40:52.437 に答える