1

C で記述された拡張モジュールを含む python プログラムを作成しています。拡張モジュールは、プログラムで継続的に使用される関数を定義します。

プログラムのどこかにメモリ リークがありますが、それを見つける方法がわかりません。私は試しました 1) Valgrind をインストールします。ただし、OSX Mavericks (10.9) を使用しており、Valgrind は OXS 10.7 (および 10.8 はやや不安定) しかサポートしていないため、これを機能させることはできません。2) gdb の使用。Pythonコードから呼び出されるc関数にブレークポイントを設定する必要があるため、gdbでPythonスクリプトを実行できないようです。そのためには python-debuginfo をインストールする必要があると思いますが、できませんでした。3) pdb の使用。しかし、pdb を使用して C コードをデバッグするにはどうすればよいかわかりませんでした。

プログラムのメモリ リークをデバッグするのに適したツールはありますか?

4

1 に答える 1

0

現在 Mac 開発ツールに同梱されているデバッガーは lldb になり、gdb を置き換えます。インターフェイスは gdb に多少似ています。Homebrewを使用して gdb をインストールできます。

C 拡張機能をデバッグする方法は、他の共有ライブラリと同じです。共有ライブラリ (拡張機能) をロードする実行可能ファイル (python) をデバッグし、実行可能ファイルが共有ライブラリをロードした後に有効になるブレークポイントを設定します。

lldb を実行します。

lldb /path/to/python -- your_python_script.py

いくつかのブレークポイントを設定します (関連するブレークポイントに置き換えます)

(lldb) b some_source_file.c:4343

次に実行すると、デバッガーはブレークポイントで停止します

(lldb) r

これで、C 拡張機能を正常にデバッグできます。

于 2014-07-21T11:15:45.103 に答える