2011-01-31 51 views
0

我目前正在通過Python.SetTrace()進行輕量級調試。但我找不到從回調參數(TraceBackFrame stackFrame,string stEvent,對象有效內容)到包含代碼的ScriptSource的通用方法。如何從TraceBackFrame獲得ScriptSource

我可以通過匹配文件路徑(或者ScriptSource.Path等於TraceBackFrame.f_code.co_filename,或者當沒有涉及文件時後者是「字符串」)來映射我最初稱爲Execute()的ScriptSource, 。

但是我搜索從TraceBackFrame指向ScriptSource的任何引用(對通過import,exec,execfile等腳本執行的其他python文件起作用)都沒有成功。

感謝您的任何提示!

+0

我不認爲有辦法做到這一點 - 你能描述一下你想要完成的事情嗎?如果您要創建腳本源代碼,則可以查看stackframe.f_code.co_filename並將文件名映射到您創建的ScriptSources。但是這隻會在你製作的ScriptSources中有效,並且有文件名。 – 2011-02-01 04:41:59

回答

0

只是爲了記錄:我們現在的解決方案現在是解析源文件,如果有文件可用的話。對於沒有文件支持的堆棧(例如eval),我們根本無法跟蹤它們。