为我的自定义.NET语言构建调试器

Bry*_*dds 4 lisp debugging f# cil

可能重复:
为.NET语言构建调试器有什么好方法?

我有一个Lisp风格的语言,我想为它构建一个调试器.我的语言在这里 - https://github.com/bryanedds/aml.

我可能会把它编译成IL.如果它对编写调试器很有帮助,我会先编写编译器.但是,我想知道构建调试器的方法是什么.我看着为Visual Studio构建它,但这很困难,因为它似乎要求我通过COM与VS连接,这意味着我需要用C或C++编写调试器(UGH!).我希望Visual Studio Debugger开发有一个我不知道的更好的故事.

在SO上查看关于.NET调试的其他线程,我看到IL包含源文件坐标,所以我想知道这是否意味着我不需要编写尽可能多的COM代码(EG - 步骤调试工作了)没有任何COM代码的框,只要编译的IL具有源文件坐标).

或者,我可以看一下使用另一个IDE,它可能有更快乐的.NET语言调试路径.有Eclipse,但它似乎没有任何特定的.NET语言调试支持.

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

所以,正如你所看到的,我宁愿迷失在这一切之中.我只需要一些方法来构建一个简单的调试器,其中包含断点和步进调试,并对我的.NET语言进行可变检查.我更喜欢在F#中编写大部分代码,因为这就是我的语言.

Tom*_*cek 7

如果您打算将System.Reflection.Emit语言编译为IL,那么使用您的代码(pdb文件)生成调试信息应该很容易,并且Visual Studio会自动选择它(因此您不必编写调试器) .

  • 用反射发射符号信息在MSDN上有一些信息.

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

我不认为写一个.NET语言调试器是你所需要的 - 已经有一个在Visual Studio中一个相当不错的调试器,所以你只需要启用你的语言来使用它.

  • 当托马斯能够给出一个简洁,有建设性的答案时,原始问题怎么能被视为无意义的? (4认同)
  • Kit,我认为这是因为SO是一个社交网站,社交网站总是被不假思索的群众所侵占.社交媒体被视为一种时尚是有原因的; 所有社交网站最终都会转变为下意识的暴民心态.SO显然正在进行中. (2认同)