gpt4 book ai didi

python - 使用 "try"来避免段错误

转载 作者:太空狗 更新时间:2023-10-30 03:00:49 25 4
gpt4 key购买 nike

最近在我的一个程序中遇到了段错误问题。我设法找到了导致问题的那一行,但我还没有找到解决它的方法。

线路:

self.window_player.add(self.vlc)

其中 self.vlc 是一个小部件,self.window_player 是在 glade 中创建的空 Gtk.Window()

该行位于我程序的 __init__ 处,所以实际上这个问题只在启动程序时发生。奇怪的是,错误只出现了 10 次中的 1 次(启动程序时)

错误:Segmentation fault 是我从终端获得的唯一输出

所以我尝试了:

while True:
try:
self.window_player.add(self.vlc)
break
except:
print "segmentation"

问题是段错误似乎没有被 try 排除!

最佳答案

对不起,你不能处理它。段错误是由内存损坏、读取或写入超出拥有内存的边界、双重释放和其他一些原因引起的。

您可以在此处找到一些导致段错误的问题示例:

https://gist.github.com/carlos-jenkins/8873932

操作系统会杀死有问题的程序,您对此无能为力。您唯一的解决办法是纠正根本问题。

您可以使用 Valgrind 工具运行一个程序,它将让您准确地找到问题所在:

http://valgrind.org/

在 Ubuntu 上,只有 sudo apt-get install valgrind然后 valgrind <program cmd>将启动程序。这个 offcourse 会慢很多,但大多数时候会发现问题。

旁注:从技术上讲,您可以通过为该信号注册回调来捕获 SIGSEV 信号。但你不应该。有关详细信息,请参阅此答案:

https://stackoverflow.com/a/10203062/439494

关于python - 使用 "try"来避免段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com