C# から DLL(C++) のアンマネージドコードをデバッグする

まずはこちらで紹介されている3通りの方法を行ってください。

nurs.hatenablog.com

 

DLL 側のデバッグは、DLL のプロジェクトを Visual Studio で開き、C# の exe を起動して、このプロセスにアタッチして行います。

C# は exe を直接起動するのでアプリを待機させたい場合があるときは、止めたい場所のコードに MessageBox.Show() 等を入れて対処してください。Visual Studio は使えませんのでブレークポイントは仕掛けられません。

 

アンマネージドコードでブレークするには、もう1つ設定が必要です。

アタッチの際に、「アタッチ先」の右側の選択ボタンを押し、

・ネイティブコード

・マネージドコード

を2つチェックを入れてからアタッチします。

アタッチするとブレークポイントが赤丸になる事を確認してください。

赤丸にならない場合は何か間違えています。設定や手順を再確認してください。

 

最後に C# の exe がメッセージボックスを表示して待機しているので、OK ボタンを押してダイアログボックスを消せば、DLL 側のブレークポイントで止まります。これで、DLL(C++)内のマネージドコード内でもアンマネージドコード内でもブレークする事ができます。

グッド・ラック。