【问题标题】:Building a debugger for my custom .NET language [duplicate]为我的自定义 .NET 语言构建调试器 [重复]
【发布时间】:2012-09-10 16:30:32
【问题描述】:

可能重复:
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++ 编写调试器(UGH!)。我希望 Visual Studio Debugger 开发有一个我不知道的更好的故事。

查看 SO 上 .NET 调试的其他线程,我看到 IL 包含源文件坐标,所以我想知道这是否意味着我不需要编写最初怀疑的那么多 COM 代码(EG - 步骤只要编译后的 IL 具有源文件坐标,就可以直接进行调试,无需任何 COM 代码。

或者,我可以考虑使用另一个 IDE,该 IDE 可能具有更愉快的 .NET 语言调试路径。有 Eclipse,但它似乎对 .NET 语言调试没有任何特别的支持。

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

所以,如您所见,我对这一切感到迷茫。我只需要一些方法来构建一个带有断点的简单调试器,并为我的 .NET 语言使用变量检查进行单步调试。我更喜欢用 F# 编写大部分代码,因为我的语言就是用 F# 编写的。

【问题讨论】:

  • 请不要重新发布您之前提出的完全相同的问题。上一个关门了,为什么这个关不了?您可以尝试编辑您的问题以使其更具建设性,然后将其标记为版主注意以重新打开它。
  • @svick - 我看不出这个问题有什么问题(我的意思是,它有点混乱,但不是很明显有缺陷)。之前关闭的问题没有留下任何可以提出改进途径的问题。 Bryan 需要做出哪些改变才能让它变得更好?
  • 是的,有人在没有任何解释的情况下关闭了前一个,所以我试图将问题更改为不那么主观(现在我问不同的方法是什么而不问哪些更好)。没有任何解释为什么上一个问题被关闭,我不知道我还应该改变什么。
  • @kvb 我不确定这个问题到底为什么被关闭了。但我确实认为重新发布它不是正确的做法,重新打开旧问题可能是。
  • @svick - 理论上我同意,但从实际的角度来看,我不确定 Bryan 是否能够重新打开它......他怎么能找出主持人认为需要做什么?被改变?那么他如何获得足够的关注,让足够多的人重新投票呢?

标签: debugging f# lisp cil


【解决方案1】:

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

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

【讨论】:

  • 啊,这开始有意义了。我想我必须自己编写所有后端的东西,然后用 COM 将它连接到 VS。很高兴事实并非如此!
  • 当 Tomas 能够给出一个简洁、有建设性的答案时,原始问题怎么会被认为是不具建设性的?
  • Kit,我认为这是因为 SO 是一个社交网站,而社交网站总是被不加思索的大众所淹没。社交媒体被视为一种时尚是有原因的。所有社交网站最终都沦为下意识的暴民心态。 SO 显然已经在路上了。
  • @Tomas:这可以在 mono/xamarin 下工作吗?
  • 我相信是这样,但我没有尝试过......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2011-05-20
相关资源
最近更新 更多