1
假設我創建了兩個斷點2和3,斷點3位於第10行,它通過程序頻繁執行。如何配置3僅在命中2之後纔打破?GDB:僅在命中不同斷點後才斷點的斷點
假設我創建了兩個斷點2和3,斷點3位於第10行,它通過程序頻繁執行。如何配置3僅在命中2之後纔打破?GDB:僅在命中不同斷點後才斷點的斷點
一個簡單的例子:
void bp2() { };
void bp1() { bp2(); }
int main()
{
bp2();
bp1();
return 0;
}
我們可以創建一個斷點,只有當觸發BP2通過BP1調用類似如下:
break bp1
break bp2
commands 1
silent
enable 2
c
end
commands 2
disable 2
end
disable 2
感謝回答。有沒有更簡單的方法來做到這一點? – user1299784
@ user1299784也許,你可能可以通過使用像「break foo if x == 5」這樣的條件來獲得你想要的效果,在簡單的代碼中我發佈了沒有參數/變量創建狀態我不知道另一個如果你知道斷點3在命中斷點2之前被命中的次數,那麼就有'忽略2 n',你可以將'n'設置爲合適的數量(最簡單的方法是設置一個斷點在bp1上)運行它並使用「信息b」並且如果數字穩定則看到「已經命中了n次」。 – matt
你可以使用便利變量在gdb中創建本地狀態,比如「set var $ bp1hit = 1」和「break bp2 if if $ bp1hit」 –