0

メソッドの最初に1行を追加した場合、最初の行でVisual Studioを介してブレークポイントを設定すると、最初の行を指すのでしょうか、それとも2番目の行を指すのでしょうか。間違った行にフラグが立てられる場合、後で定期的なデバッグセッションを確実にするために.exeファイルを編集するときに何かできることはありますか?

線xをYに設定するようなものはありませんか?どこかでそのようなものを見たのを覚えていますが、.NETが関連しているかどうかはわかりません。

4

4 に答える 4

3

デバッグエクスペリエンスを変更しないようにする場合は、PDBファイルのデバッグシンボルを更新する必要があります。

私が見たこのための最良のオプションは、デバッグシンボルとILの(制限された)変更をサポートするMono.Cecilを使用することです。

于 2009-08-08T00:47:43.517 に答える
2

ILを変更する場合、PDBファイルには古い情報が含まれます。IL行からC#行番号への変更の間に1:1はおそらくないことに注意してください(たとえば、3つのILステートメントを挿入してもIDEブレークポイントは3行のC#でオフセットされません)。

影響を最小限に抑えるために、コードのILで変更された部分を別々のメソッドに分割することをお勧めします。また、自分がILの変更を行っていると仮定すると、デバッグ中にC#ビューとILビューを切り替えると便利な場合があります。

それを容易にするために、生成されたコードを少しいじる必要があるかもしれません。たとえば、注入されたILをラッパーメソッドに含めることができる場合は、DebuggerStepThroughAttribute、DebuggerNonUserCodeAttribute、またはDebuggerHiddenAttributeなどの属性を使用して、それを無視するようにデバッガーに指示できます。(動作の微妙な違いについては、ドキュメントを参照してください)

于 2009-08-08T01:31:43.897 に答える
1

.pdbファイルが一致しない可能性があるため、フラグが立てられると思います。

于 2009-08-08T01:38:05.683 に答える
0

ILをどのように追加していますか?プロファイラーインストルメンテーション(SetILFunctionBody)を介してこれを行う場合は、デバッガーがILの変更を認識できるように、新しいILコードマップ(SetILInstrumentationCodeMap)も提供する必要があります。

于 2009-08-08T20:08:27.330 に答える