我想做我自己的c#调试器——怎么做?我应该使用什么工具?

我想做我自己的c#调试器——怎么做?我应该使用什么工具?,c#,architecture,C#,Architecture,我对制作一个程序感兴趣,该程序将采用c#代码,并允许我逐行执行该代码——一个调试器 我如何在不必编写整个c#编译器的情况下完成这个项目?我正在使用Microsoft Visual Studio,但我希望我的软件尽可能独立于调试器实现。您正在寻找的托管调试API。 您可以使用csc.exe编译代码(该代码包含在标准.Net Framework安装中,并由包装),然后执行程序集,附加调试器,并逐步完成代码 请注意,您可能仍然需要一个C#解析器来确定您在源代码中的位置。 PDB文件将包含一些此类信息;

我对制作一个程序感兴趣,该程序将采用c#代码,并允许我逐行执行该代码——一个调试器

我如何在不必编写整个c#编译器的情况下完成这个项目?我正在使用Microsoft Visual Studio,但我希望我的软件尽可能独立于调试器实现。

您正在寻找的托管调试API。
您可以使用
csc.exe
编译代码(该代码包含在标准.Net Framework安装中,并由包装),然后执行程序集,附加调试器,并逐步完成代码

请注意,您可能仍然需要一个C#解析器来确定您在源代码中的位置。
PDB文件将包含一些此类信息;我不知道多少钱


请注意,VS调试器中我们认为理所当然的大多数功能(尤其是监视窗口和变量工具提示)都需要痛苦的重新实现。(s)

编写visual studio替代方案?您不需要一个解析器来进行分析。PDB文件包含关于哪个文本范围对应于哪个“序列点”的所有信息。(这不同于C对“sequence point”的定义,因此使用引号。)如果需要监视窗口、表达式计算器等,则确实需要解析器,但当然,您只需要解析表达式。如果您决定不允许lambdas,那么这将是一个需要解析的非常小的子集。@Eric:谢谢;我一直在想这件事。VS真的不使用解析器来显示断点吗?显然,您需要数据提示的解析器。调试器不需要解析代码来显示断点。断点的工作完全依赖于知道什么样的文本范围对应于什么样的IL指令范围。