2012-11-19 20 views
0

(我編碼調試器。但我的疑問,也從一個調試器用戶點)關於步驟在+斷點行爲調試器

在許多語言(GDB,Eclipse的)許多調試器實現STEP_OVER命令允許一次執行一條語句;與STEP_INTO的區別在於它不會執行堆棧中的降級(即所謂的函數),這往往是件好事。

10 : y = f1(x); 
11 : z = y + 1; 

現在,假設我跨過上面一行10,但命中斷點內部函數(深也許幾個層次的調用堆棧)f1。我不清楚當我恢復時會發生什麼:如果調試器在第11行暫停(實際上「完成step over」命令)?還是應該忘記它?我相信大多數(所有?)調試器都會在後面進行。這是標準/預期的行爲?我自己覺得這有點令人沮喪。有沒有一種方法(在某些調試器中)從內部斷點恢復執行到外部逐級語句?或者有什麼辦法可以做一步忽略斷點?

回答

0

WinDbg做後者,我相信這是標準行爲。如果您擔心在切換命令期間出現不同的斷點,則可以始終在第11行手動設置斷點,並繼續運行,直到命中第11行。或者,您可以暫時禁用其他斷點,但請注意,調試器也可能因其他原因而中斷(例如引發異常),具體取決於其配置。