2016-04-23 7 views
0

私はネイティブC++ dllを呼び出すWinForms管理アプリケーションを持っています。私はプロジェクトのための混在管理と非管理デバッグを有効にしており、プロジェクトをデバッグするときにアンマネージコードにステップインできます。 JITのデバッグに興味があります。なぜなら、デバッガの外部でデバッグビルドを実行し、アサーションに違反した後にのみデバッグを開始するほうがずっと速いからです。 JITデバッガは、マネージコードで例外が発生したときに正常に動作します。また、JITがスタンドアロンのC++アプリケーションをデバッグするときにも動作します。しかし、WinFormsアプリケーションから呼び出されるアンマネージコード内で例外が発生するたびに、デバッグセッションを開始した直後にJITデバッガが終了します。 Options/Debugging/Just-In-TimeリストにあるすべてのJITデバッガを有効にしました。このシナリオはまったくサポートされていますか?Visual Studioジャストインタイムデバッガが直ちに終了する

UPDATE

私はいくつかのより多くのテストを実行した、と私はこの問題は、WinFormsのアプリケーションに固有ではありません

  1. ことがわかります。管理コンソールアプリケーションがネイティブdllを呼び出すと、JITデバッグも失敗し、アサーション例外が発生します。
  2. 問題はフレームワークのバージョンに依存していないようです。私はバージョン3.5,4,4.5,4.6を試しました。
  3. デバッガは、マネージドホストアプリケーションにデバッガを接続すると、アンマネージコードのアサーション例外を破ることもできません。

答えて

0

私は愚かだと感じます。解決策は私の目の前にあった。 Visual Studio Just-In-Time Debuggerダイアログにオプションがあります。これは「手動でデバッグエンジンを選択する」と呼ばれています。管理エンジンとネイティブエンジンの両方を選択する必要があります。

0

私は前にこの状況を経験しました。私は問題は、例外がデバッガによってキャッチされていないことだと思います。

私は以下のことをしましたが、これは参考になるかもしれません。

[デバッグ] - [Windows] - [例外設定]をクリックします。

また、クイック起動で「例外」を検索するだけです。

デフォルト設定では、多くの例外がキャッチされないことがあります。

+0

ありがとう、それはここではケースではないようです。アサーション例外が有効になり、スタンドアロンのネイティブアプリケーションを実行しているときに正しくキャッチされます。アサーション例外がマネージドコードから呼び出されるネイティブDLLの内部で発生した場合にのみ、jit-debugに失敗します。しかし、私がすべての例外を有効にした場合に備えて。同じ問題。 – Max

関連する問題