我应该从哪里开始使用“Segmentation fault:11”来调试python程序

时间:2015-12-17 18:04:38

标签: python debugging segmentation-fault

我有一个python脚本test.py

正在运行python test.py会给出简短的消息:

Segmentation fault: 11

一般来说,我应该从哪里开始调试这样的问题?

2 个答案:

答案 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中的调用导致了段错误。