我想制作自己的c#调试器 - 如何做到这一点?我应该使用什么工具?

Ami*_*hai 6 c# architecture

我有兴趣制作一个程序,它将采用c#代码,并允许我逐行逐步执行该代码 - 一个调试器.

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

SLa*_*aks 5

您正在寻找管理调试API ICorDebug.
您可以使用它 csc.exe来编译代码(这包含在标准的.Net Framework安装中,并由CSharpCodeProvider类包装),然后执行程序集,附加调试器,并逐步执行代码.

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

请注意,我们认为理所当然的VS调试器中的大多数功能(特别是Watch窗口和变量工具提示)都需要痛苦的重新实现.(Func-eval s)

  • 你不需要解析器只是为了踩踏.PDB文件包含有关哪个文本跨度对应于"序列点"的所有信息.(这是从"序列点",因此引号的C定义的不同.)你确实需要一个解析器,如果你想有一个观察窗口,表达式求值,等等,当然你只需要解析表达式.如果您决定不允许lambda,那么这是一个非常小的解析子集. (5认同)