如何使用 CLR 为 .NET 编写另一个调试器

本文关键字:另一个 调试器 NET 何使用 CLR | 更新日期: 2023-09-27 17:55:59

我想为 .NET 实现另一个调试器(语言)(这只是出于学术原因,以便它可以只实现语言的一部分)。我自己喜欢实现NS2(网络模拟器2)script for .NET in which anybody can write ns2 script and debug it with .NET

我在stackoverflow中阅读了这篇文章,它与我想要的相去甚远。

这是要求

  • 有一些预定义的关键字(例如:for,while,if ...)
  • 检查语句的正确形式(例如:for(start;end;counter){command} ...)
  • 不同类型语句的不同颜色
  • 能够添加到任何 IDE(例如:像加载项或作为 DLL 或......(我不知道))
  • 许多其他暂时没有必要的事情

我该怎么做?

更新:我不确定你是否明白我的意思,看看这个,它非常接近我正在寻找的东西。

如何使用 CLR 为 .NET 编写另一个调试器

这不是一件容易的事。然而:Dragon Book可能是一个很好的起点(假设你有足够的计算机科学背景,编译器理论书对你来说很有意义)。 《编译器构造:原理与实践》也是一本好教材。

您需要编译为 CIL(通用中间语言)。 这篇方便的维基文章概述了 CIL 指令集。正在针对 CLR 调试中间代码...好吧,这就是您链接的StackOverflow文章将派上用场的地方=)

这将覆盖你的前两颗子弹(并消耗你生命的很大一部分)。

接下来的两个是不同的问题,但"让它开始"的最简单方法可能是为现有文本编辑器定义语法,并在程序中设置一个宏来调用编译器。 我推荐TextPad,尽管我确信对可配置的通用文本编辑器的意见在社区;)

设计一个完整的IDE,其中包含您在环境中了解和喜爱的所有功能可能是一项艰巨的任务......或者你可以尝试构建一个 Eclipse 插件。 就个人而言(假设你可以设计你的语言并从中学到一些东西),我只会坚持在TextPad中突出显示语法。

人们对

这一领域越来越感兴趣,事实上,Microsoft Research有一个活跃的项目,该项目正在研究构建一个通用的基础结构,以构建针对.NET的自定义语言的编译器(和调试器)

http://cciast.codeplex.com/

我自己使用过基础设施,但不是编译器技术方面的专家。希望这能给你一个好的起点,你可能会发现论坛有助于与志同道合的人分享想法。