托管IronPython:有可能获得当前执行的源代码行吗?

时间:2013-03-14 16:45:38

标签: debugging ironpython

是否可以从托管的IronPython环境中执行的Python脚本中检索行号?我想在脚本执行时以某种方式突出显示托管环境之外的AvalonEdit控件中的那一行(在托管应用程序中)。

1 个答案:

答案 0 :(得分:2)

我已经想通了,可以通过简单地给脚本引擎一个跟踪回调方法来获取该行,并且(可能是异步地)触发一个相应的事件,相应地刷新一个IBackgroundRenderer ......好吧......它的工作原理。

strategyScriptEngine.SetTrace(IronPythonTraceBack);
strategyScriptEngine.Execute(script, strategyScope);

在同一个班级的其他地方:

private static TracebackDelegate IronPythonTraceBack(TraceBackFrame frame, string result, object payload)
{
    if (IronPythonExecutingLine != null) IronPythonExecutingLine((int)frame.f_lineno);
    return IronPythonTraceBack;
}