C++
で記述され、C#
アプリケーションから呼び出されたDLLがあります。DLL
はアンマネージコードです。
ビルド後のイベントを含むDLL
ファイルとその.pdb
ファイルをC#
アプリのデバッグ実行dir
にコピーしても、ブレークポイントに到達できません。 DLL
コードに。ブレークポイントには、「このドキュメントにはシンボルがロードされていません」というメッセージが添付されています。
dll
ソースでデバッグを取得するには、他に何をする必要がありますか?
「Tools
-> Options
-> Debugging
-> General
-> Enable
コードのみ」を無効にしました。 DLL
は、「ランタイムトラッキングと最適化の無効化(/ ASSEMBLYDEBUG)」でコンパイルされ、デバッグ情報を「はい(/ DEBUG)」に生成します。
C++ DLLにデバッグするには、ソリューションのスタートアップアプリケーションで混合モードデバッグを有効にする必要があります。
これにより、F5スタイルのシナリオのネイティブコードにデバッグできます。プロセスにアタッチできるようにする場合は、[プロセスにアタッチ]ダイアログで次の手順を実行します。
アンマネージド(ネイティブ)デバッグを有効にする必要があります。
開始後にプロセスにアタッチする場合:
[ツール]メニューに移動し、プロセスにアタッチして、ネイティブデバッグが有効になっていることを確認します。
読み取り専用の編集ボックスが表示されます。
添付先:マネージコード、ネイティブコード[選択]
ネイティブコードがそこにリストされていることを確認してください。そうでない場合は追加してください。
ビジュアルスタジオ内からプロジェクトを開始する場合:
デバッグモードで開始しているプロジェクトプロパティ。プロジェクトのプロパティに移動し、[デバッグ]タブを選択します。
このチェックボックスがオンになっていることを確認してください。
アンマネージコードのデバッグを有効にする
デバッグするプロセスにアタッチするときは、アタッチする方法を指定する必要があります。いくつかのオプション、つまりマネージドとネイティブがあります。アンマネージC++でC#コードをデバッグするには、プロセスにマネージおよびネイティブとしてアタッチする必要があります(両方を同時に選択できます)。
同じ問題に直面し、受け入れられた回答で提案されたすべてのことを実行しましたが、アンマネージドDLLのブレークポイントはヒットしませんでした!
ただし、次のことを行うと、最終的にDLLをデバッグできました。
ソリューションエクスプローラーでソリューションを選択しますMenu
>> Tools
>> options
>> Debugging
>> General
から選択
チェックを外すソースファイルが元のバージョンと完全に一致する必要があります "