別のプロジェクト (bin
フォルダーに含まれる)から DLL への参照を追加し、[ローカルにコピー] を に設定しましたtrue
。コードをステップスルーすると; デバッガーはいたるところにジャンプします。これは、コードが最適化されているためだと思います。2 つの質問があります。
- これは、コードが最適化されているためですか
- (1) が true の場合、そもそもコードをステップ実行できるのはなぜですか。つまり、Reflector を使用しないでください。
私の推測では、ジャンプは PDB (シンボル) がコンパイルされた DLL と同期していないことが原因であると思われます。したがって、シンボルは、コードが実際に行っていることと実際には一致しない行番号に移動するように VS に指示します。インライン関数のため、最適化も同様に役割を果たす可能性があります。
デバッグ エクスペリエンスに影響を与えるその他の事項は次のとおりです。
DebuggerNonUserCode
属性で明示的にマークされたメソッド一部の関数がインライン化されるため、最適化されたコードのデバッグは「ジャンプ アラウンド」する場合があります。最も分かりやすいことは、ローカル変数は通常、最適化されて取り除かれ、それらを読み取ろうとするとその旨のメッセージが表示されることです。
ただし、ジャンプがほとんど意味をなさない場合は、PDB (行番号にマップされる) またはソース (行番号を持つ) が間違っている可能性が高くなります。