2012-12-28 59 views
4

簡單地說,Debug.Assert調用失敗並不會停止MonoDevelop中程序的執行流程,它們只是打印出一條跟蹤消息,它以此開始(後跟一個堆棧跟蹤):Debug.Assert不會在MonoDevelop/MonoTouch中打入編輯器

2012-12-28 19:21:01.978 TestApp[81689:c07] ---- DEBUG ASSERTION FAILED ---- 
2012-12-28 19:21:01.979 TestApp[81689:c07] ---- Assert Short Message ---- 

我能做些什麼來強制失敗Debug.Asserts打破在MonoDevelop中的Assert執行?

+1

[導致VS2010調試器在Debug.Assert失敗時中斷]的可能重複(http://stackoverflow.com/questions/7633265/causing-vs2010-debugger-to-break-when-debug-assert-fails) – Bridge

+0

這不是該帖子的重複,這個是關於MonoDevelop,而不是Visual Studio。 –

+1

經過多一點研究後,似乎我需要編寫一個自定義的TraceListener,然後手動調用Debugger.Break,但我期望這種默認行爲可用於單聲道或MonoDevelop ... – ysalmi

回答

5

Debug.Assert的調試器集成部分尚未實現 - 請參閱Xamarin bug #4650

幾個月前我已經快速瀏覽了一下,然後意識到正確的做法可能需要運行時支持來自動展開頂部幀(因此MonoDevelop將停止在Debug.Assert聲明中,而不是在跟蹤監聽器實現)。

作爲解決方法,您可以添加自定義跟蹤偵聽器並呼叫Debugger.Break()

+0

感謝您的信息馬丁。對於什麼是值得的,即使沒有自動退卷的休息會比現在更有用(特別是如果它是一個簡單的標誌來切換這種行爲)。將按照建議查看自定義跟蹤偵聽器。 – ysalmi

+0

因此,在_MonoTouch_(在模擬器中運行iOS代碼)中調用Debugger.Break()會簡單地殺死正在運行的應用程序的執行。有什麼想法嗎? – ysalmi

相關問題