0

C++ と C を使用してライブラリを開発しました。ライブラリは私の C++ テスト プログラムで正常に動作しています。しかし、 c_typesを使用して Python でライブラリを使用すると、セグメンテーション違反が発生しました。

また、私のライブラリは、c_types または C++ テスト プログラムを使用すると 64 ビット OS で正常に動作しますが、32 ビット OS に切り替えるとクラッシュします。また、私の C++ テスト プログラムは 32 ビット OS でも問題なく動作します。

これは非常に奇妙です。

Pythonc_types ライブラリを一緒にデバッグする方法を知っている人はいますか?

または何か提案はありますか?

4

2 に答える 2

1

正しいのは、 pdbでgdbを起動することです。

ここに例: ctypes の他の関数からポインタとして返された関数を呼び出す

于 2012-11-08T10:12:23.153 に答える
0

この答えの方が良いと思います:

gdbでpythonを実行しています

要約すると、次を実行するだけです。

gdb python

//after gdb is running, type the following command
run test_case.py *arguments_of_your_script*

gdb は、python c_typesライブラリでセグメンテーション違反を見つけると停止します。

その後、一般的な gdb コマンドを実行して、メモリとレジスタを調べます。

于 2012-11-08T13:19:51.873 に答える