2016-04-23 64 views
0

我有一個WinForms託管應用程序調用本機C++ dll。我已經爲該項目啓用了混合託管和非託管調試,並且在調試項目時能夠進入非託管代碼。 我對JIT調試很感興趣,因爲在調試器外面運行調試版本要快得多,並且只有在違反某些斷言後纔開始調試。當託管代碼中引發異常時,JIT調試器正常工作。當我JIT調試一個獨立的C++應用程序時,它也可以工作。但是,無論何時在從WinForms應用程序調用的非託管代碼內引發異常,JIT調試程序在啓動調試會話後立即退出。我已經在選項/調試/實時列表中啓用了所有的JIT調試器。這種情況是否支持?Visual Studio即時調試器立即退出

UPDATE

我已經運行一些測試,我可以看到

  1. 這個問題是不特定的WinForms應用程序。當託管控制檯應用程序調用本機dll時JIT調試失敗,這引發了斷言異常。
  2. 該問題似乎不依賴於框架版本。我試過版本3.5,4,4.5,4.6。
  3. 當我將調試器附加到託管主機應用程序時,調試器也無法在非託管代碼中斷言斷言異常。

回答

0

我覺得很蠢。解決方案就在我面前。 在Visual Studio Just-In-Time Debugger對話框中有一個選項。它被稱爲「手動選擇調試引擎」。必須選擇託管引擎和本機引擎。

0

我以前經歷過這種情況。我認爲問題在於調試器未捕捉到異常。

我做了以下,也許這會有所幫助。

點擊Debug-> Windows-> Exception Settings。

或者您只需在快速啓動時搜索「異常」。

您可能會發現很多異常在默認設置下都沒有捕獲到。

+0

謝謝你,但是這似乎並不在這裏如此。斷言異常已啓用,並且在運行獨立本機應用程序時正確捕獲。只有在從託管代碼調用的本地dll內引發斷言異常時,它纔會進行jit-debug。但以防萬一我已啓用所有例外。同樣的問題。 – Max