簡體   English   中英

Debug.Assert()僅在單步執行時觸發

[英]Debug.Assert() only triggers when stepping over it

我正在使用Visual Studio 2010編寫.NET斷言:

Debug.Assert(false, "Testing Debug.Assert");

當我在這行代碼上放置一個斷點時,等到斷點到達,然后讓程序繼續運行,一切正常:彈出“斷言失敗”對話框。 但是,當我刪除斷點並重新運行應用程序時,將忽略Debug.Assert()語句。

有誰知道什么可能導致這種非常奇怪的行為?

我的一位同事立即知道問題所在。 我必須在“Visual Studio 2010 / Menu / Options / Debugging / General”中啟用“Enable Just My Code”標志。 顯然這是Visual Studio 2010中的一個錯誤“

我遇到了同樣的問題。 使用Trace.Assert按預期工作。


好吧, Trace.Assert在下一個調試會話中開始表現出相同的行為。


啊,發現了問題。

  • 選中“啟用我的代碼”。

    • 如果在“異常”對話框(Ctrl + Alt + E)中選中“公共語言運行時異常”的“Thrown”,則將拋出Assert。

    • 如果未選中,將拋出Assert。

  • 使用“啟用我的代碼”未選中。

    • 如果選中“Thrown”,則不會拋出Assert。

    • 如果未選中“Thrown”,則拋出Assert。

因此,如果取消選中“Enable Just My Code”並且選中“Common Language Runtime Exceptions”的“Thrown”,則不會拋出Assert。

這里給出的答案沒有幫助,但我發現它就像在項目的構建設置中檢查Debug配置的“Define DEBUG constant”選項一樣簡單:

項目構建設置中的Define DEBUG常量選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM