0

C# コンパイラが DllImport 属性を持つメソッドに対して生成するコードを表示/デバッグすることは可能ですか? VS デバッガー内の DllImport 属性で定義されたメソッドにステップインしようとしましたが、これを行うことはできません。逆アセンブル ビューでは、特定のアドレスへの呼び出し命令を確認できますが、F11 キーを押す (ステップ イン) と、ステップ オーバーするだけです。プロジェクトのプロパティで「ネイティブコードのデバッグを有効にする」チェックボックスをオンにしました。

アップデート

私の理解が正しければDllImportAttribute、メソッドにアタッチされているのを確認すると、コンパイラはいくつかの操作を実行します。DllImportAttributeクラスのドキュメントには何も見つかりませんでした。classのソース コードにDllImportAttributeも、非常に基本的なクラス定義しかありません。デバッガーで外部関数を呼び出しているcall FFA0C0C8ときにアセンブリ命令が表示され、その命令にステップ インすると、インポートされた関数本体にすぐに移動しますが、インポートされた関数は FFA0C0C8 とは異なるアドレスを持っています。逆アセンブル ビューをこのアドレスに変更できませんでした。すべての dll 読み込みロジックがこの関数内にあるように見えますが、デバッガーはスキップします。これはライブラリ関数なのか、コンパイラによって生成された関数なのか疑問に思っています。

4

1 に答える 1