混合(C#/ C ++)デバッグでデータブレークポイントを設定するにはどうすればよいですか?
-
04-07-2019 - |
質問
プログラムをC#で起動し、アンマネージC ++を呼び出します。
アンマネージC ++で行を分割すると、「新しいデータブレークポイント」メニュー項目がグレー表示されます。
とにかくこれの周りにありますか?
解決
混合モードプロセスのネイティブ部分にデータブレークポイントを設定するには、 jyoungが投稿した回答を参照してください。
Visual Studioは、純粋なネイティブコード以外を実行する場合、データブレークポイントを無効にします。 this VSプログラムマネージャーからの理由の部分的な説明を投稿します。
他のヒント
これを行うには、次の作業が必要でした:
- アンマネージdllをスタートアッププロジェクトとして設定
- 管理対象プログラムを起動コマンドとして設定
- デバッグモードをネイティブに設定
- "実行を中断"または、ブレークポイントをヒットして、「デバッグ」モードに入ります。州
イェイ
提案された解決策は常に機能しません。ネイティブモードでデバッグしているときに、プログラムがネイティブコードで破損している場合でも、「新しいデータブレークポイント」を設定しようとすると、ポップアップ "ブレークポイントを設定できません。共通言語ランタイムではデータブレークポイントはサポートされていません"
別の方法は、コードから直接データブレークポイントを追加することです。 こちらの記事を参照してください。
これは混合モードでうまく機能し、ネイティブデバッグモードがアクティブである必要があるだけです(上記で提案したとおり)
どこでも動作する非常に便利なトリックは、特別な条件でコードからブレークポイントを呼び出すことです:
If (Condition)
System.Diagnostics.Debugger.Break()
所属していません StackOverflow