我有一个python脚本test.py
。
正在运行python test.py
会给出简短的消息:
Segmentation fault: 11
一般来说,我应该从哪里开始调试这样的问题?
答案 0 :(得分:1)
一般情况下(并且没有针对您的代码的细节),最好的办法是将print语句放入测试脚本,直到您可以将内容缩小到导致段错误的单行。放入一堆打印语句并在开始缩小哪些打印语句运行时移动它们,以及哪些不是因为它们位于段错误之后。
答案 1 :(得分:1)
如果您的Python脚本导致分段错误,这通常意味着在C中实现的某些Python模块出错了。您应该能够使用gdb
轻松讲述。尝试运行:
gdb `which python`
# This starts an interactive gdb session. Type:
set args /path/to/python/script.py
r
# The program will now run. Interact with it until the segfault occurs. Then type:
bt
这将为您提供导致分段错误的c调用堆栈。 (gdb可能会打印有关缺少调试符号的消息,并为您提供运行以安装它们的命令。调试符号将为您提供更详细的堆栈跟踪,包括函数名称和文件行号。)使用此信息可以更快地确定Python中的调用导致了段错误。