单声道软调试器 - 添加断点

时间:2014-04-18 12:18:52

标签: debugging mono soft-debugger

我正在为Mono开发调试器。因此我使用的是具有VirtualMachineManager和VirtualMachine的Mono.Debugger.Soft.dll。

问题是:如果我想在一个简单的程序中创建断点,我该怎么做? (例如Sourceodefile:Program.cs和Line:17)

VirtualMachine的实例具有SetBreakpoint-Method,但此方法需要MethodMirror。我不清楚如何只知道sourcecode-File中的位置?

招呼 基督教

1 个答案:

答案 0 :(得分:0)

您需要做的是侦听TypeLoad事件。获取TypeLoad事件时,迭代TypeMirror中的所有MethodMirrors,查找匹配的文件名和行号。

如果找到匹配项,则可以在ILOffset上的MethodMirror上设置断点。

但是,如果程序已经开始运行,则可能会遇到问题,因为您可能错过了该方法所存在的Type的TypeLoad事件。解决方法是保留所有已加载的TypeMirrors的缓存调试程序的开始,以便您也可以迭代在用户尝试添加所述断点之前已加载的类型。

您可能有兴趣知道命令行调试器已在开发中:https://github.com/mono/sdb