2つの関数がfunc1
ありfunc2
、それぞれにブレークポイントが設定されています。
func2
前のブレークポイントヒットがあった場合に、GDBをブレークポイントで停止させることは可能func1
ですか?
これを行う最良の方法は、ブレークポイントでコマンドを使用することです。
2つのブレークポイントに到達したときに、特定のコマンド(カウンターのインクリメントなど)を実行するようにGDBに指示できます。これらの変数/フラグの数に基づいて、実行が条件付きで停止されます。
このリンクでこの情報を見つけました。詳細については、同じものを参照してください。記事は適切な例で非常によく書かれています。お役に立てれば。
一方のブレークポイントにもう一方のブレークポイントを設定させます。define
gdb spaghettiを使用して関数を作成することを避けるために、を使用することをお勧めします。
int c1=0, c2=0;
void func1(){
c1++;
}
void func2(){
c2++;
}
int main(){
// we shouldn't see a breakpoint here
for(int i=0; i < 5; i++)
func1();
func2();
// get a breakpoint
func1();
return 0;
}
clang++ main.cpp -o main.exe -g
gdb --args ./main.exe
break func2
commands
break func1
# run a few commands when we hit func1()
commands
print c1
backtrace
end
# continue to func1() breakpoint
continue
end
run