可以在调试上下文中使用Mono编译器作为服务吗?

时间:2011-11-22 18:46:02

标签: c# compiler-construction mono gmcs

我想知道是否以及如何在调试上下文中使用Mono编译器作为服务(请参阅herehere)来查询/修改/可视化/等调试器中运行时的对象。目前,根据this SO post,Roslyn CTP不支持此功能。

2 个答案:

答案 0 :(得分:2)

是的,这完全可能。我无法告诉你有关如何实现这一点的确切细节,但请看一下从v2.8(或者更早)开始实际实现你的想法的MonoDevelop。在MonoDevelop中,您可以使用REPL Pad,它允许您在应用程序因断点而停止的相同上下文中输入C#代码。我在调试视图中附加了一个简单的MD屏幕截图,并打开了REPL pad。由于MD是开源的,您可以查看源的实现方式并删除所需的部分。

Screenshot of MonoDevelop using Direct/REPL evaluation window while debugging

答案 1 :(得分:0)

我认为它应该是可行的,因为Mono Soft Debugger是Mono运行时的一部分,所以你可以使用“Debugger Agent”:

  

调试器代理是单声道运行时内部提供的模块   调试客户端程序的服务。

因此,一种替代方法可能是尝试将编译器中的Mono Soft Debugger作为服务(在Mono运行时之上运行)进行交互。

由于MonoDevelop IDE中使用了Mono Soft Debugger,您还可以调查此IDE是否可用于您正在寻找的内容。