Python 升华文本3插件主机崩溃恢复

Python 升华文本3插件主机崩溃恢复,python,sublimetext3,sublimetext,sublime-text-plugin,libclang,Python,Sublimetext3,Sublimetext,Sublime Text Plugin,Libclang,我为Sublime Text 3开发了一个插件,我的python代码使用c类型绑定到clang。有时调用libclang会导致在重新分析过程中检测到libclang:crash(我还不明白原因,但与此问题无关)。这将导致插件主机崩溃 所以问题是:python中有没有任何方法可以从底层c绑定的故障中恢复?我很乐意跳过这个在我遇到崩溃的特定文件上的操作 谢谢 UPD:在评论中有一个简短的讨论,进一步阐述缺乏适当的小型可复制示例是有意义的。这并不是因为我懒惰,我确实尽可能让我希望得到帮助的人理解这个问

我为Sublime Text 3开发了一个插件,我的python代码使用c类型绑定到clang。有时调用libclang会导致在重新分析过程中检测到
libclang:crash(我还不明白原因,但与此问题无关)。这将导致插件主机崩溃

所以问题是:python中有没有任何方法可以从底层c绑定的故障中恢复?我很乐意跳过这个在我遇到崩溃的特定文件上的操作

谢谢


UPD:在评论中有一个简短的讨论,进一步阐述缺乏适当的小型可复制示例是有意义的。这并不是因为我懒惰,我确实尽可能让我希望得到帮助的人理解这个问题。但在这种情况下,这真的很难。最初的问题是由于libclang在一些奇怪的情况下出错造成的,我还没有确定。这可能与一个库在编译时不支持c++11,而另一个库在编译时使用c++11有关,但我想强调的是,这与问题无关。这里的问题是python调用的东西中有一个segfault,这个segfault会导致Sublime Text plugin_host退出。这里有一个简单的例子,但不是因为缺乏尝试。如果你有关于如何构建一个的想法,我也愿意接受你的建议。很抱歉,这个问题的质量很差,这是我目前最好的问题。

根据我掌握的详细信息,我确信您的问题可以归结为“Python能否处理使用外部函数接口时发生的错误。”

我很确定答案是“否”,我将以下测试场景放在一起解释原因:

这是我们的测试C++模块(对于名称的使用目的有点C),它会在我们的脸上爆炸, Test.cc:

#包括
#包括
课堂测试{
公众:
无效测试(){

std::cout根据我所掌握的细节,我确信您的问题可以归结为“Python能否处理使用外部函数接口时发生的错误。”

我很确定答案是“否”,我将以下测试场景放在一起解释原因:

这是我们的测试C++模块(对于名称的使用目的有点C),它会在我们的脸上爆炸, Test.cc:

#包括
#包括
课堂测试{
公众:
无效测试(){

std::cout问题寻求调试帮助(“为什么这段代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:。@MattDMo谢谢你的建议,我总是尝试做一个简单的示例,但在这种情况下我不知道如何进行。我不是一个期望在python中,很难创建一个失败的sublime示例。我只知道,如果python中使用的c库以segfault结尾,就会发生这种情况。我很抱歉这个问题的质量很差,但我不能做得更好,所以欢迎您提供任何建议!我有点怀疑“错误是什么?”与此无关“如何从错误中恢复?"。或者缺少任何详细信息是必要的。@AndrasDeak这是一个正确的观点。我很想提供详细信息,但失败的最初问题是另一个与libclang有关的深奥问题。它连接到一个使用c++11支持编译的库,然后在使用c++11编译代码时尝试使用该库。至少是这样我现在最好的猜测是。所以我很难更好地描述它。我确实理解这听起来很粗略,但这确实是我现在所拥有的一切,并且不是因为缺乏尝试。最终,在从python调用的c代码中有一个segfault。@niosus有什么方法可以让其他人复制它吗?我认为这是根本问题关于这个问题-我们很想帮助您,但是由于没有办法重现您看到的内容,我们无法重现,而且这个问题是离题的。问题寻求调试帮助(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:。@MattDMo谢谢你的建议,我总是尝试做一个简单的示例,但在这种情况下我不知道如何进行。我不是一个期望在python中,很难创建一个失败的sublime示例。我只知道,如果python中使用的c库以segfault结尾,就会发生这种情况。我很抱歉这个问题的质量很差,但我不能做得更好,所以欢迎您提供任何建议!我有点怀疑“错误是什么?”与此无关“如何从错误中恢复?"。或者缺少任何详细信息是必要的。@AndrasDeak这是一个正确的观点。我很想提供详细信息,但失败的最初问题是另一个与libclang有关的深奥问题。它连接到一个使用c++11支持编译的库,然后在使用c++11编译代码时尝试使用该库。至少是这样我现在最好的猜测是。所以我很难更好地描述它。我确实理解这听起来很粗略,但这确实是我现在所拥有的一切,并且不是因为缺乏尝试。最终,在从python调用的c代码中有一个segfault。@niosus有什么方法可以让其他人复制它吗?我认为这是根本问题关于这个问题-我们很想帮助你,但是没有办法重现你所看到的,我们就是做不到,而且这个问题是离题的。太棒了,这就是我希望的例子。我不知何故尝试去引用NULL,但似乎不起作用。没有想到raise。S
Ξ /tmp/29_may → python test.py
stackoverflow
[1]    55992 abort      python test.py
Ξ /tmp/29_may → python test_handle_exception.py
stackoverflow
[1]    56297 abort      python test_handle_exception.py