构建一个调试器我的自定义.NET语言[复制]

问题描述 投票:4回答:1

可能重复: What is a good approach to building a debugger for a .NET language?

我有我想建立一个调试器Lisp风格的语言。我的语言是在这里 - https://github.com/bryanedds/aml

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

看着在.NET调试其他线程上的话,我看到IL包括源文件的坐标,所以我不知道这是否意味着我不需要为一个最初会怀疑写尽可能多的COM代码(例如 - 步调试工作出没有任何COM代码,只要该编译IL的方块的有源文件坐标)。

或者,我可以看看使用,也许有.NET语言调试的幸福路径另一个IDE。还有就是Eclipse,但它似乎并没有对.NET语言调试任何特别的支持。

也许最好的调试建筑的故事IDE可能MonoDevelop的。当然,我需要它与MS .NET,而不只是单声道工作。然而,它的文档是相当光秃秃的。人有经验,建立一个调试器呢?

所以,你可以看到,我宁愿失去这一切。我只是需要一些方法来建立与断点和与我的.NET语言变量检查步调试一个简单的调试器。我喜欢写在大多数F#代码为这就是我的语言写成,

debugging f# lisp cil
1个回答
7
投票

如果你要使用System.Reflection.Emit来编译语言IL,那么它应该是很容易的生成也与您的代码(pdb文件)和Visual Studio调试信息将自动挑选了(所以你不必写调试器)。

  • Emitting Symbolic Information with Reflection Emit MSDN上有一些这方面的信息。
  • 您还可以看看TickSpec源代码,这是写在F#并使用此键启用描述的测试场景(如果你看视频,在主页上的文件的调试,你可以看到,他可以把断点在文本文件中)。

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

© www.soinside.com 2019 - 2024. All rights reserved.