Jus*_*tin 9 debugging clr ironpython
作为一个学习练习,我正在使用IronPython编写一个简单的扩展/插件/宏框架 - 我已经掌握了基础知识,但我想添加一些基本的调试支持,以使我的脚本编辑器更易于使用.
我一直在互联网上搜索一下,我发现了一些编写托管调试器的好资源(包括Mike Stall的优秀.Net调试博客和CLR调试API上的MSDN文档) - 我知道IronPython是基本上是IL,但除此之外,我对如何开始有点迷失,特别是:
(我现在对制作调试器的GUI方面不感兴趣 - 我已经非常了解这可能如何工作)
还有一些链接开始使这更加清晰 - 我已经看到了两种添加调试器支持的方法:
第一个是使用IronPython发出IL并使用用于调试.Net应用程序的标准技术对其进行调试的事实.关于ipydbg的开发,这里有关于这种方法的一系列博客文章,这是一个使用这种方法的python调试器.
由于这种限制,生成了Microsoft.Scripting.Debugging库,这更适合于运行IronPython"嵌入"的应用程序(即在同一进程中).
有一个介绍,它在这里和它是如何使用更广泛的博客文章在这里 -本质上,它是由哪些每次执行任何的回调函数的"有趣"的情况发生(我们每次进入一个功能的时候,每次我们从返回功能和每次执行一行).回调函数运行时,脚本的执行被阻止,这允许您"中断"脚本.
我决定采取第二种方法 - 我将更新这篇文章,因为我发现了更多可能对其他人试图做到这一点的信息.
我不是IronPython的专家,但我在使用WinDbg调试托管应用程序方面有一些经验.我简要介绍了IronPython应用程序在调试器中的外观.由于Python的动态特性,很多代码都是在运行时发出的.这使得调试IronPython应用程序比说C#应用程序更复杂,因为你可以说有一层额外的代码生成.
曾经大量参与Iron语言开发的Harry Pierson 撰写了一系列关于编写IronPython调试器的博客文章,其中有很多细节.
| 归档时间: |
|
| 查看次数: |
2563 次 |
| 最近记录: |