Làm cách nào để gỡ lỗi lỗi phân đoạn Python?Làm cách nào để gỡ lỗi lỗi phân đoạn Python?
Chúng tôi đang cố gắng chạy mã python của chúng tôi trên SuSE 12.3. Chúng tôi nhận được lỗi phân đoạn lặp lại. Mã python đã hoạt động trên các nền tảng khác mà không có lỗi phân đoạn, trong nhiều năm.
Chúng tôi chỉ mã Python, không có phần mở rộng C. ....
Cách tốt nhất để gỡ lỗi này là gì? Tôi biết một chút ansi c, nhưng đó là cách đây mười năm ....
Python 2.7.5
Cập nhật
Các lỗi segmentation xảy ra trên phiên dịch shutdown.
tôi có thể chạy các kịch bản nhiều lần:
python -m pdb myscript.py arg1 arg1
continue
run
continue
run
Nhưng lỗi Phân khúc xảy ra, nếu tôi rời khỏi pdb với Ctrl-d.
Cập nhật 2
bây giờ tôi cố gắng để gỡ lỗi nó với 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
Cập nhật 3
Tôi đã cài đặt gdbinit từ http://hg.python.org/cpython/file/default/Misc/gdbinit và gỡ lỗi biểu tượng từ http://download.opensuse.org/debug/distribution/12.3/repo/oss/suse/x86_64/
(gdb) pystack
No symbol "_PyUnicode_AsString" in current context.
Bây giờ là gì?
Cập nhật 4 Chúng tôi đã cài đặt một RPM mới (python-2.7.5-3.1.x86_64). Chúng tôi nhận được ít segfaults, nhưng họ vẫn xảy ra. Dưới đây là liên kết để kho:
http://download.opensuse.org/repositories/devel:/languages:/python:/Factory/openSUSE_12.3/x86_64/
Cập nhật 5 Giải Quyết vấn đề ban đầu của tôi:
Đó là http://bugs.python.org/issue1856 (shutdown (thoát) có thể treo hoặc segfault với chủ đề daemon chạy)
Related: Detect Interpreter shut down in daemon thread
Tôi cũng nhận được segfault về đóng ứng dụng của tôi. Làm thế nào để sửa lỗi này cho python 2,7? – Patrick
@Patrick Xem http://stackoverflow.com/a/18099067/633961 – guettli