如何在ac#程序中放置「IF DEBUG」條件,以便在運行時,如果您在Debug模式下運行,它將忽略一組代碼,但如果程序沒有運行,則執行一段代碼在調試模式下運行?可以使用這種情況的情況是,如果在塊的開始處拍攝時間戳,並且在末尾拍攝另一個時間戳。 THey在運行時幾乎沒有區別。然而,如果你在調試模式下逐步完成代碼,它們會有很大的不同,並且「if block」中的錯誤條件可能會被啓動,導致某些代碼的不合時宜(雙關語)執行。如何在C#程序中添加「IF調試」條件?
回答
你只要把你的代碼在這樣的塊:
#IF DEBUG
//code goes here
#endif
這是不是一個運行時的事情,這是一個預處理器指令,這意味着該塊中的代碼,甚至不會被編譯並會不包括在內。
如果你想在運行時檢查,如果你正在調試,您可以檢查Debugger.IsAttached
使用預處理指令的#if:
#if debug
// run in debug mode
#else
// run if not in debug mode
#endif
不能正常工作,請參閱OP ...以便在運行時... – KevinDTimm 2010-06-16 20:20:58
#if DEBUG
// something
#elif
// some other thing
#endif
不起作用,請參閱OP ...以便在運行時... – KevinDTimm 2010-06-16 20:22:06
@KevinDTimm:啊,錯過了這一點。不介意我,我只是給出了錯誤的答案 – simendsjo 2010-06-17 06:38:57
#if (DEBUG)
...
#else
...
#endif
在這裏看到:http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
不工作見OP ...因此,在運行時... – KevinDTimm 2010-06-16 20:22:49
@KevinDTimm:雖然提問者說「在運行時」,但我沒有看到爲什麼他的特定場景不能被預處理器指令處理。在調試模式下運行時,似乎他想跳過'if(ItTookALongTime)'東西,因爲在調試模式下,我們預計它可能需要很長時間......所以爲什麼不確保'if(ItTookALongTime)'東西我們編譯調試時排除在外? – 2010-06-16 20:38:11
,因爲這不是他要求的:) 他想要一種方法來打開一個標誌用於調試目的,這可能很容易成爲一種方式(在未來)打開日誌記錄(例如)。 – KevinDTimm 2010-06-16 21:59:06
一對夫婦更多的細節:
- 你可以用一個完整的方法,或只是一個代碼塊,或只是一個代碼行。
- 您需要添加
using System.Diagnostics;
解決問題的唯一答案 – KevinDTimm 2010-06-16 20:02:39
由於所有其他的答案(但一個)並沒有解決你的問題,讓我來試試:
如果你希望有一個運行時開關,你需要一個從您的環境或命令行獲取信息的方式。另外,一旦你獲得了這些信息,你就需要將它應用到你的程序中。
1)爲此,您需要一個全局變量。
bool bDebug;
2)獲得的調試信息
bDebug = strcmp (getEnv ("DebuggingMode"), "1"); // you'll need to mess with this a little - do 'man getenv' and 'man strcmp' for an understanding of what I'm doing
- 或 -
利用getopt()
功能,以找出是否調試關閉或
3)每在你的代碼中放入你想要打開調試的代碼,檢查bDebug是否是設置爲
if (bDebug) {
// do something
}
- 1. C#:添加if-else in做 - 條件
- 2. 如何爲if條件添加循環?
- 3. 調試BASH IF條件
- 4. 在vba中添加多個if條件
- 5. 如何從Ireport調用時在程序中調用和添加條件?
- 6. #if在c#中未調試?
- 7. 如何在if語句中的條件滿足時調試
- 8. 如何調試C程序
- 9. 添加或IF條件
- 10. 如何在select查詢中添加if-then-else條件?
- 11. 如何在trimpath中添加if子句條件的表達式?
- 12. 如何在sproc中添加詳細的if條件?
- 13. 如何在ng-if中添加自定義條件?
- 14. 如何嘗試在if條件
- 15. 如何在Windows上調試C程序?
- 16. 如何在InstallShield安裝程序中添加先決條件
- 17. 在條件內添加IF/CASE語句
- 18. 在C程序中調用調試器
- 19. 在存儲過程中添加if if條件並返回硬編碼值?
- 20. 如果條件在調試程序中執行兩個塊
- 21. 如何通過變量在表單上添加if條件
- 22. 如何在c#中添加事件處理程序?
- 23. 如何在調試Visual C++程序時禁用符號加載?
- 24. 在調試c程序
- 25. 調試C程序
- 26. 如何將進度條添加到我在C#中的SharpZipLib實用程序中
- 27. 如何調試C#命令行程序
- 28. 如何在#ifdef中添加'或'條件?
- 29. 如何在SQL中添加條件?
- 30. 如何在TensorFlow圖中添加條件?
+1爲「運行時」位 – Earlz 2010-06-16 19:31:18
On'Debugger。IsAttached',我相信如果您在生產站點上進行遠程調試,情況將會如此。是的,我知道你通常不想這樣做,但是在一些邊緣情況下,你無法弄清楚有什麼不對,這可能會有所幫助。如果您使用遠程調試,只要確保您的「調試」代碼不會在生產環境中導致問題。 – 2010-06-16 21:10:08
+1 @Nelson:遠程調試(附加調試器)是調試Windows服務的唯一方法。 – 2010-06-17 21:43:09