私の C# コードは P/Invoke を介してアンマネージ サードパーティ ライブラリ関数を呼び出しており、アンマネージ関数には奇妙な副作用があります。私はそれをデバッグして、それが何をしているのかを見たいと思っています。
C# コードをデバッグし、P/Invoke 呼び出しに「ステップ イン」しようとすると、代わりにステップ オーバーします。そこに驚きはありません -- 私はそれを期待していました。この DLL のソースはありません。また、逆アセンブル ビューを表示しても問題ないとは言いませんでした。
そこで、デバッガーを逆アセンブリ ビューに切り替えます ([デバッグ] > [ウィンドウ] > [逆アセンブリ])。これで、JITted コードに個々の x86 命令が表示されます。もう一度、P/Invoke 呼び出しに踏み込もうとします。繰り返しますが、代わりにステップオーバーします-x86 CALL命令にステップインするように明確に指示しましたが。x86 CALL に足を踏み入れるのはどれくらい難しいですか?
これまでの私のグーグルは、これに影響を与える可能性のあるいくつかのオプションを示しており、すでにそれらを設定しています:
- [ツール] > [オプション] > [デバッグ] > [全般] で、[マイ コードのみを有効にする] がオフになっています。
- [プロジェクト] > [プロパティ] > [デバッグ] タブで、[アンマネージ コードのデバッグを有効にする] がオンになっています。
ダメ。Visual Studio はまだ介入を拒否しています。
サードパーティの DLL 用の PDB はありませんが、それは問題ではありません。ソースコードやシンボル情報は気にしません。(まあ、実際にはそれらは本当に素晴らしいものですが、取得できないことはすでにわかっています。)Visual Studioはx86デバッグを実行できます(逆アセンブリビューはそのためのものです)。 x86 コード。
P/Invoke 呼び出し内で x86 命令にステップ インできるように VS を取得するには、他に何をする必要がありますか?