2014-04-18 25 views
0

我目前正在为Mono开发一个调试器。因此我使用的是具有VirtualMachineManager和VirtualMachine的Mono.Debugger.Soft.dll。单声道软调试器 - 添加断点

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

VirtualMachine的实例有一个SetBreakpoint-Method,但此方法需要一个MethodMirror。对于我来说,我不清楚如何知道只有源代码文件中的位置?

迎接 基督教

回答

0

你所要做的是倾听TypeLoad事件。获取TypeLoad事件时,遍历TypeMirror中的所有MethodMirrors,以查找匹配的文件名和行号。

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

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

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