2016-05-02 108 views

回答

3

一個簡單的例子:

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 
+0

感謝回答。有沒有更簡單的方法來做到這一點? – user1299784

+0

@ user1299784也許,你可能可以通過使用像「break foo if x == 5」這樣的條件來獲得你想要的效果,在簡單的代碼中我發佈了沒有參數/變量創建狀態我不知道另一個如果你知道斷點3在命中斷點2之前被命中的次數,那麼就有'忽略2 n',你可以將'n'設置爲合適的數量(最簡單的方法是設置一個斷點在bp1上)運行它並使用「信息b」並且如果數字穩定則看到「已經命中了n次」。 – matt

+0

你可以使用便利變量在gdb中創建本地狀態,比如「set var $ bp1hit = 1」和「break bp2 if if $ bp1hit」 –