2013-01-09 24 views
5

私はいつかPythonスクリプト(もちろんCPython)をデバッグするためにgdbを使います。コアダンプをデバッグするのに便利です(また、c拡張モジュールが必要な場合)。gdbのpython関数にブレークポイントを設定するには

基本的な質問は、gdbのpython関数でブレークポイントを設定する方法です。関数fooを持つPythonスクリプトがあり、fooが呼び出された直後に破棄したいとします。私はPyEval_EvalFrameExに条件付きブレークポイントを設定してもうまくいかないかもしれないと思う。あなたは提案手法、(それはかなりではないのですが)、この作品の使用

答えて

1

ここ
break PyEval_EvalFrameEx if (strcmp((((PyStringObject *)(f->f_code->co_name))->ob_sval), "foo") == 0) 

を、fはPyFrameObjectです。 f->f_code->co_filenameにチェックして、適切なファイルがあることを確認することもできます。これは、あなたが壊れているし、多くを比較しているので、これはかなりプログラムを遅くすることに注意してください。

GDB 7には、CPythonを扱うための素晴らしいヘルパーマクロがありますが、私はそれに精通していません。おそらくあなたが探しているものを達成するためのより良い方法があります。

関連する問題