IronPython: как получить доступ к трассировке локальных переменных - PullRequest
2 голосов
/ 10 октября 2009
private ScriptEngine pe;
private ScriptScope scope;

private void button1_Click(object sender, EventArgs e)
{
    pe = Python.CreateEngine();
    scope = pe.CreateScope();

    pe.Runtime.SetTrace(OnTraceback);
    pe.Execute(@"
def square(x):
  s = x*x
  return s

a = square(2) + (3)
print ""hello world "" + str(a)
", scope);
}

private TracebackDelegate OnTraceback(TraceBackFrame frame, string result, object payload)
{
    //How can I access the local variables of the current function?

    return OnTraceback;
}

Позвольте мне повторить: я хочу получить локальные переменные функции, где в настоящий момент находится выполнение Python (функция, окружающая строку frame.f_lineno).

1 Ответ

1 голос
/ 10 октября 2009

Вы можете получить доступ к frame.f_locals, который позволит вам получить / установить все переменные.

...