2011-01-31 3 views
0

私は現在、Python.SetTrace()経由の軽量デバッグを試しています。しかし、コールバックパラメータ(TraceBackFrame stackFrame、文字列stEvent、オブジェクトペイロード)からコードを含むScriptSourceに一般的な方法を見つけることはできません。TraceBackFrameからScriptSourceに移動する方法

私は最初にExecute()を呼び出したファイルソースをマップすることができます。ファイルパス(ScriptSource.PathがTraceBackFrame.f_code.co_filenameと等しいか、またはファイルが含まれていない場合は後者が "string" 。

しかし、TraceBackFrameからScriptSource(import、exec、execfileなどを介してスクリプトによって実行される他のpythonファイルで動作する)を指す参照の検索は成功しませんでした。

ありがとうございました!

+0

私はこれを行う方法がないと思います - あなたが達成しようとしていることを説明できますか?スクリプトソースを作成する場合は、stackframe.f_code.co_filenameを見て、作成したScriptSourcesにファイル名のマッピングを維持してください。しかし、それはあなたが作ったScriptSourcesと一緒にしか動作せず、ファイル名もあります。 –

+0

お客様はDOSバッチファイルの "echo on"と同様の "トレース"機能を必要としています。だから実行された行ごとに、ソースを印刷したいと思っています。そして、モジュールのために、スクリプトはそれ自身(import、exec、execfileなどを介して)実行されましたが、私はScriptSourceを作成しません。 IronPythonランタイムにリンクできるフック/コールバックはありますか? (私は独自のPlatformAdaptionLayerがこれに対して低レベルだと思う...)おそらく、唯一の回避策は、co_filenameを使用して、ファイルを自分自身で読むことです... – MarkusSchaber

+0

http://ironpython.codeplex.comでウィッシュリストの問題をオープンしました。/workitem/30103 - 何が起こるかを見ていきます。たぶん私は自分自身をハックするのに十分な時間を見つけることさえできます。 – MarkusSchaber

答えて

0

私たちの現在の解決策は、ファイルが利用可能であれば、独自のソースファイルを解析することです。ファイル(例えばG. eval)によってサポートされていないスタックフレームについては、それらをトレースすることはできない。

関連する問題