2009-07-03 4 views

答えて

4

でコアファイルからPyObject *のPythonの値を発見するとにかくあなたはすべて持っている場合は特に、それは多くの作業だが、もちろん、それは行うことができますありますシンボル。 Pythonの特定のバージョン(およびそれを構築するために使用されているコンパイルオプション)のヘッダーファイルを見てください。PyObjectは、最初に型へのポインタを含む構造体として定義されています。たくさんのマクロが使用されているので、同じPythonフゔ゗ルのコンパイルを元のソースから再度実行することもできますが、前処理後に-Eを停止することで、ビットを作成した特定のCコードを参照できますあなたはコアダンプで見ています。

タイプオブジェクトには、その名前である文字列(charの配列)があります。そのオブジェクトから、そのタイプのオブジェクトが何を含んでいるのかを推測できます。直接コンテンツか、長さ、すなわちアイテムの数など)と、実際のデータへのポインタとを含む。

私はこのような高度な死後のデバッグを数回(関連するPythonバージョンと準備されたすべての前処理されたソース&c)の非常に正確な知識から始め、数日かかった(私はまだフリーランスであり、1時間で充電していましたが、少なくとも20時間はそういう仕事に入札しなければなりませんでした。

IOW、それは本当に本当に本当に唯一の非常に高価なピクルスの方法です。プラスの面では、ソースのすべての行を暗記した後でさえ、あなたがそこにいると思っていたよりも、Pythonの内部についての詳細を教えてくれるでしょう。幸運にも、あなたはいくつかが必要です!!!

関連する問題