C/C++コードがP/Invokeを介して非管理サードパーティライブラリ関数を呼び出していますが、アンマネージ関数にいくつかの奇妙な副作用があります。私はそれにデバッグし、それが何をしているかを見たいと思います。disassembyビューでP/Invoke呼び出しに移動
私のC#コードをデバッグし、P/Invoke呼び出しを "ステップイン"しようとすると、代わりにステップオーバーします。そこには驚きはありません - 私はそれを期待しました。このDLLのソースはありません。また、逆アセンブリビューが表示されていても問題ありませんでした。
したがって、デバッガを逆アセンブリビューに切り替えます([デバッグ]> [Windows]> [逆アセンブリ])。今私はJITtedコード内の個々のx86命令を見る。再び私はP/Invoke呼び出しにステップインしようとします。繰り返しますが、x86 CALL命令にステップインすることを明確に示したにもかかわらず、代わりにステップオーバーします。 x86 CALLに入るのはどれくらい難しいですか?私のこれまでのところ私は、この影響を与えることができるオプションのカップルを示しているグーグル、と私はすでにそれらを設定している
:ツールで
- > [オプション]> [デバッグ]> [全般]を、「マイコードのみを有効にする」でありますチェックされていません。
- [プロジェクト]> [プロパティ]> [デバッグ]タブで、[管理されていないコードのデバッグを有効にする]をオンにします。
いいえいいえ。 Visual Studioはまだ入りません。
私はサードパーティのDLL用のPDBを持っていませんが、それは問題ではありません。ソースコードやシンボル情報は気にしません。 Visual Studioはx86デバッグを行うことができます(つまり、逆アセンブリビューはのです)、私がしたいのはx86コードに一歩進んでください。
VSでP/Invokeコールのx86命令にステップインするには、他に何が必要ですか?
あなたはこれを理解しましたか? – Dennis
私はこれをやろうとしてから数年が経ちましたが、私が思い出したように、いいえ、私はそれを働かせることはありませんでした。 –