Debugging 为自定义.NET语言生成调试器

Debugging 为自定义.NET语言生成调试器,debugging,f#,lisp,cil,Debugging,F#,Lisp,Cil,可能重复: 我有一个Lisp风格的语言,我想为它构建一个调试器。我的语言在这里- 我可能会把它编译成IL。如果它有助于编写调试器,我将首先编写编译器。但是,我想知道构建调试器的一些方法是什么。我看了它的VisualStudio的构建,但这很困难,因为它似乎要求我通过VS与VS进行接口,这意味着我需要在C或C++中编写调试器(UGH!)。我希望VisualStudio调试器开发有一个我不知道的更好的故事 查看.NET上的其他线程在SO上的调试,我看到IL包含源文件坐标,所以我想知道这是否意味着我

可能重复:

我有一个Lisp风格的语言,我想为它构建一个调试器。我的语言在这里-

我可能会把它编译成IL。如果它有助于编写调试器,我将首先编写编译器。但是,我想知道构建调试器的一些方法是什么。我看了它的VisualStudio的构建,但这很困难,因为它似乎要求我通过VS与VS进行接口,这意味着我需要在C或C++中编写调试器(UGH!)。我希望VisualStudio调试器开发有一个我不知道的更好的故事

查看.NET上的其他线程在SO上的调试,我看到IL包含源文件坐标,所以我想知道这是否意味着我不需要像人们最初怀疑的那样编写那么多COM代码(例如,只要编译的IL具有源文件坐标,步骤调试就可以在没有任何COM代码的情况下立即进行)

或者,我可以考虑使用另一个IDE,它可能更适合.NET语言调试。有Eclipse,但它似乎不支持.NET语言调试

也许具有最佳调试器构建故事的IDE可能是MonoDevelop。当然,我需要它与MS.NET一起使用,而不仅仅是Mono。然而,它的文档相当简单。有人有在那里构建调试器的经验吗


所以,正如你所看到的,我在这一切中迷失了方向。我只需要一些方法来为我的.NET语言构建一个带有断点的简单调试器和带有变量检查的分步调试。我更喜欢用F#编写大部分代码,因为我的语言就是用F#编写的。

如果要使用
System.Reflection.Emit
将语言编译为IL,那么用代码(
pdb
文件)生成调试信息应该很容易,Visual Studio会自动获取这些信息(因此不必编写调试器)

  • MSDN上有一些关于这方面的信息

  • 您还可以查看用F#编写的源代码,并使用它在描述测试场景的文件中启用调试(如果您查看主页上的视频,您可以看到他可以在文本文件中放置断点)


我不认为为.NET语言编写调试器是您所需要的-Visual Studio中已经有一个相当好的调试器,所以您只需要启用您的语言就可以使用它。

请不要重复您以前问过的问题。上一个问题已关闭,为什么您认为这个问题不会?您可以尝试编辑你的问题使它更具建设性,然后标记出来让主持人注意重新打开它。@svick-我看不出这个问题有什么问题(我的意思是,它有点混乱,但没有明显的缺陷).对于之前关闭的问题,没有留下任何建议改进途径的评论。Bryan需要做哪些更改以使其更好?是的,有人在没有任何解释的情况下关闭了前一个问题,因此我尝试将问题更改为不太主观(现在我问不同的方法是什么,而不问哪一种更好)。如果没有解释上一个问题为什么被关闭,我不知道我还应该改变什么。@kvb我不确定问题为什么被关闭。但我确实认为重新发布不是正确的方式,重新打开旧问题可能是。@svick-理论上我同意,但从实际角度来看,我不确定是什么原因ther Bryan本来可以让它重新打开…他怎么能找到主持人认为需要更改的内容?然后他怎么能得到足够的关注,让足够多的人投重新打开的票?啊,这现在开始有意义了。我想我必须自己写所有的后端内容,然后将其连接到V很高兴事实并非如此!当Tomas能够给出一个简洁、建设性的答案时,最初的问题怎么会被认为是没有建设性的呢?Kit,我认为这是因为社交网站也是如此,社交网站总是被没有思想的大众所淹没。社交媒体被视为一种时尚是有原因的;所有社交网站都是如此电子网站最终演变成了下意识的暴民心态。所以很明显它正在发展中。@Tomas:这在mono/xamarin下可能会起作用?我相信是的,但我还没有尝试过。。。