作为一项学习练习,我正在使用IronPython为自己编写一个简单的扩展/插件/宏框架-我已经掌握了基础知识,但我想添加一些基本的调试支持以使脚本编辑器更易于使用。
我已经在互联网上闲逛了一段时间,并且发现了一些编写托管调试器的好资源(包括Mike Stall的出色的.Net Debugging blog和CLR Debugging API上的MSDN文档)-我知道IronPython本质上是IL,但是除了我有点不知道如何开始使用,尤其是:
(我现在对制作调试器的GUI方面不感兴趣-我已经很好地知道了这可能如何工作)
最佳答案
其他一些链接已开始使这一点变得更加清晰-我看到了两种添加调试器支持的方式:
将IronPython调试为CLR应用程序
首先是利用IronPython发出IL并使用用于调试.Net应用程序的标准技术对其进行调试的事实。哈里·皮尔森(Harry Pierson)here撰写了一系列有关此方法的博客文章,内容涉及ipydbg(使用此方法的python调试器)的开发。
使用Microsoft.Scripting.Debugging
由于此限制,因此改而产生了Microsoft.Scripting.Debugging库,它更适合于运行“嵌入式” IronPython的应用程序(即在同一过程中)。
关于here的介绍,以及有关如何使用here的更广泛的博客文章-本质上,它由一个回调函数组成,该回调函数在每次发生“有趣”的事件时都会执行(每次输入一个函数,每次从a返回时,功能以及每次执行一行时)。回调函数运行时,脚本的执行被阻止,这使您可以“破坏”脚本。
我决定采用第二种方法-我会更新此文章,因为我发现更多信息可能会对其他尝试这样做的人有所帮助。
关于clr - 编写Iron Python调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493557/