Debugging 如何从TraceBackFrame获取脚本源

Debugging 如何从TraceBackFrame获取脚本源,debugging,ironpython,traceback,Debugging,Ironpython,Traceback,我目前正在尝试通过Python.SetTrace()进行轻量级调试。但是我找不到从回调参数(TraceBackFrame stackFrame、string stEvent、object payload)到包含代码的ScriptSource的通用方法 我可以通过匹配文件路径(ScriptSource.path等于TraceBackFrame.f_code.co_文件名,或者后者在不涉及文件时为“string”)来映射最初调用Execute()的ScriptSource 但是我搜索从TraceBa

我目前正在尝试通过Python.SetTrace()进行轻量级调试。但是我找不到从回调参数(TraceBackFrame stackFrame、string stEvent、object payload)到包含代码的ScriptSource的通用方法

我可以通过匹配文件路径(ScriptSource.path等于TraceBackFrame.f_code.co_文件名,或者后者在不涉及文件时为“string”)来映射最初调用Execute()的ScriptSource

但是我搜索从TraceBackFrame指向ScriptSource的任何引用(它适用于脚本通过import、exec、execfile等执行的其他python文件)都没有成功


谢谢你的提示

仅作记录:我们当前的解决方案是,如果有可用的文件,就自己解析源文件。对于没有文件支持的StackFrame(例如eval),我们根本无法跟踪它们。

我认为没有办法做到这一点-您能描述一下您试图实现的目标吗?如果要创建脚本源,可以查看stackframe.f_code.co_filename并维护文件名到所创建脚本源的映射。但这只适用于您制作的带有文件名的脚本源。客户需要一个“跟踪”功能,类似于DOS批处理文件上的“echo on”。因此,对于每个执行的行,他们都希望打印出源代码。对于脚本自身执行的模块(通过导入、执行、执行文件等),我不创建脚本源。是否有任何钩子/回调可以链接到IronPython运行时?(我认为自己的PlatformAdaptionLayer是低级别的…)也许唯一的解决办法是使用co_文件名并自己读取文件…我刚刚在上打开了一个愿望列表问题-我们看看会发生什么。也许我自己有足够的时间来解决这个问题。