2010-04-28 80 views
6

我一直在想這一段時間 - 有沒有一種方法來編寫斷點...?有條件的?例如,我可以指定類似的東西 - 「當這個變量變成這個值,打開並打開調試器」? (當你想要調試循環執行後期循環值時,尤其是在長循環中)。有什麼方法可以有條件地設置或編碼斷點?

我想這可能是特定於IDE的,因爲調試在不同的IDE中以不同的方式實現......我想有興趣知道如何在任何IDE中執行此操作,特別是在Eclipse和Visual Studio中。

回答

5

這在Visual Studio中絕對可行。您通常可以單擊左邊距插入斷點,然後右鍵單擊該斷點。右鍵單擊菜單中的一個選項是「條件...」,並且您可以指定一個謂詞,如果滿足謂詞,該謂詞將僅告訴調試器該斷點上的中斷。

+0

謝謝!任何線索如何在eclipse中實現這一點?儘管現在我知道這個術語,並且很可能我很可能很容易地google到它 – froadie 2010-04-28 13:48:17

+0

不幸的是,沒有。我上次在三到四年前使用過Eclipse,幾乎沒有記住=/ – Tejs 2010-04-28 13:50:56

+0

好吧,我通過嘗試使用相同的技術發現了它。:)也許我會將它作爲新的答案發布。感謝您的幫助 – froadie 2010-04-28 13:54:28

1

由於這個原因,大多數IDE允許有條件的斷點。在Visual Studio中,您可以右鍵單擊邊界中的斷點的紅點,然後從那裏打開條件對話框。您也可以從Visual Studio中的斷點窗口獲取條件對話框。我不熟悉Eclipse。

3

在Visual Studio中,您可以聲明式設置條件斷點,這與常規斷點相似,但只有在某些條件爲真時纔會斷開。條件可以使用局部變量,並且可以從設置斷點的位置訪問任何內容。只需右鍵單擊任何斷點(紅點)並選擇「條件...」。

另外,.NET語言可以調用Debugger.Break()方法以編程方式中斷執行。這也可以在if語句中完成:

if (count > 8 && Debugger.IsAttached) 
    Debugger.Break(); 
+0

酷!並且在開發和生產環境之間切換時,是否有任何方法可以輕鬆禁用/啓用調試代碼? – froadie 2010-04-28 13:47:10

+0

是的。使用#ifdef指令:'#ifdef DEBUG' 'MessageBox.Show(「This is a debug version!」);''#endif'。你可以用'#define BETA_BUILD'定義新的指​​令。 – 2010-04-28 13:51:07

+0

此外,構建Release配置時,所有對Debug類的調用都不存在,因爲它只應用了'ConditionalAttribute',它與'#ifdef'有相似的效果,僅在方法或類級別。您可以將該屬性應用於您自己的方法和類。 – 2010-04-28 13:54:16

2

設置Eclipse的一個條件斷點(對於所有Visual Studio的答案,謝謝!):

設置一個斷點。右鍵單擊並選擇「斷點屬性...」。選中「啓用條件」並將您的條件代碼輸入到文本區域。

3

如果您的IDE不支持條件斷點,請添加if語句並將其放入其中。

if (variable == 3) { 
    // Stub code to attach breakpoint. 
    1 = 1; 
} 
相關問題