0

私は現在、Mono 用のデバッガーを開発しています。したがって、VirtualMachineManager と VirtualMachine を持つ Mono.Debugger.Soft.dll を使用しています。

問題は、単純なプログラムにブレークポイントを作成したい場合、どうすればよいでしょうか? (例: Sourceodefile: Program.cs および Line: 17)

VirtualMachine のインスタンスには SetBreakpoint-Method がありますが、このメソッドには MethodMirror が必要です。ソースコードファイル内の場所だけを知っているだけでこれを取得する方法は明確ではありませんか?

クリスチャンに挨拶する

4

1 に答える 1

0

あなたがしなければならないことは、TypeLoad イベントをリッスンすることです。TypeLoad イベントを取得したら、TypeMirror 内のすべての MethodMirror を反復処理して、一致するファイル名と行番号を探します。

一致が見つかった場合は、その MethodMirror の ILOffset にブレークポイントを設定できます。

ただし、プログラムが既に実行を開始している場合、メソッドが存在する Type の TypeLoad イベントを見逃している可能性があるという問題が発生する可能性があります。これに対する解決策は、読み込まれたすべての TypeMirror のキャッシュを最初から保持することです。ユーザーがブレークポイントを追加しようとする前に、ロードされた型を反復処理できるように、プログラムをデバッグします。

コマンドライン デバッガーが既に開発中であることに興味があるかもしれません: https://github.com/mono/sdb

于 2014-04-19T04:04:19.313 に答える