GDBを使用すると、変更がwatch i発生するたびに中断できiます。問題は、名前を使用する複数の関数があるiため、GDBがそれらすべての関数の内部に侵入することです。
変更されるたびに中断することは可能iですか?ただし、特定の関数内でのみ可能ですか?
あなたはグローバル変数を見ていると思います。したがって、この変数が変更されたすべての関数で停止します。これは論理的で予想される動作です。変更するたびに特定の関数内でのみブレークしたい場合はi、のブレークポイントを設定しないでiください。代わりに、目的の関数にブレークポイントを設定します。このブレークポイントにヒットしたら、目的の関数で変更されたときに次のブレークポイントにヒットすることが確実になるように、ウォッチを設定します(可能な再帰などを無視します)ii
特定の関数のスコープに入るまでローカル変数にブレークポイントを設定できないため、同じ名前のすべての関数内のローカル変数を監視していない可能性があると思います。