[解決済み] Pythonのセグメンテーションフォールトをデバッグするには?
質問
Pythonのセグメンテーションフォールトをデバッグするにはどうしたらよいですか?
私たちは、SuSE 12.3 上で Python コードを実行しようとしています。再現可能なセグメンテーションフォールトが発生します。Python コードは、何年もの間、セグメンテーション エラーなしに他のプラットフォームで動作していました。
私たちは Python のみをコード化し、C 拡張はしていません ....
これをデバッグするのに一番良い方法は何ですか?Ansi Cは少し知っていますが、10年前のことです.
Python 2.7.5
アップデート
セグメンテーションフォールトはインタープリタのシャットダウン時に発生します。
スクリプトを何度か実行することができます。
python -m pdb myscript.py arg1 arg1
continue
run
continue
run
しかし、ctrl-dでpdbを離れると、セグメンテーションフォールトが発生します。
更新2
今、gdbでデバッグしてみました。
gdb
> file python
> run myscript.py arg1 arg2
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffefbe2700 (LWP 15483)]
0x00007ffff7aef93c in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
(gdb) bt
#0 0x00007ffff7aef93c in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#1 0x00007ffff7af5303 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.7.so.1.0
#2 0x00007ffff7adc858 in ?? () from /usr/lib64/libpython2.7.so.1.0
#3 0x00007ffff7ad840d in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#4 0x00007ffff7af1082 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#5 0x00007ffff7af233d in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#6 0x00007ffff7af233d in PyEval_EvalFrameEx () from /usr/lib64/libpython2.7.so.1.0
#7 0x00007ffff7af5303 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.7.so.1.0
#8 0x00007ffff7adc5b6 in ?? () from /usr/lib64/libpython2.7.so.1.0
#9 0x00007ffff7ad840d in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#10 0x00007ffff7ad9171 in ?? () from /usr/lib64/libpython2.7.so.1.0
#11 0x00007ffff7ad840d in PyObject_Call () from /usr/lib64/libpython2.7.so.1.0
#12 0x00007ffff7aeeb62 in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.7.so.1.0
#13 0x00007ffff7acc757 in ?? () from /usr/lib64/libpython2.7.so.1.0
#14 0x00007ffff7828e0f in start_thread () from /lib64/libpthread.so.0
#15 0x00007ffff755c7dd in clone () from /lib64/libc.so.6
アップデート3
gdbinitをインストールしたのは http://hg.python.org/cpython/file/default/Misc/gdbinit とデバッグ用シンボルを http://download.opensuse.org/debug/distribution/12.3/repo/oss/suse/x86_64/
(gdb) pystack
No symbol "_PyUnicode_AsString" in current context.
今度は何?
アップデート4 新しいRPM (python-2.7.5-3.1.x86_64) をインストールしました。セグメンテーションフォールトは少なくなりましたが、まだ起こります。 リポジトリへのリンクはこちらです。
http://download.opensuse.org/repositories/devel:/languages:/python:/Factory/openSUSE_12.3/x86_64/
アップデート 5 最初の問題を解決しました。
それは http://bugs.python.org/issue1856 (シャットダウン (終了) は、実行中のデーモンスレッドでハングアップしたりセグメンテーションが発生することがあります)
関連する デーモンスレッドでインタープリタのシャットダウンを検出する
どのように解決するのですか?
私がこの質問にたどり着いたのは
Segmentation fault
が、終了時ではなく、ただ一般的に、他の何も効果的に役立つことがないことがわかりました。
faulthandler
. これは Python 3.3 の一部であり、2.7 にインストールするには
pip
.
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラーです。Segmentation fault (コアダンプ)
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複