Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何阻止来自cURL库的Qt应用程序信号SIGSEGV?_C++_C_Qt_Curl_Crash - Fatal编程技术网

C++ 如何阻止来自cURL库的Qt应用程序信号SIGSEGV?

C++ 如何阻止来自cURL库的Qt应用程序信号SIGSEGV?,c++,c,qt,curl,crash,C++,C,Qt,Curl,Crash,我的Qt应用程序使用cURL库发送HTTP请求,有时cURL发送SIGSEGV,然后我的应用程序崩溃。 是否可以捕捉该信号并防止分段故障 不,不是。相反,修复错误并以这种方式防止分段错误。大概您的平台提供了某种调试器。TL;博士: 不要试图阻止或忽略SIGSEGV。这只会给你带来痛苦 说明: SIGSEGV意味着发生了非常糟糕的事情,并且您的程序已经进入了不允许访问的内存。这意味着你的程序完全被水淹没了 请原谅我的加拿大人 你的程序坏了。你不能再相信它会以任何理性的方式表现,应该感谢SIGSEG

我的Qt应用程序使用cURL库发送HTTP请求,有时cURL发送SIGSEGV,然后我的应用程序崩溃。
是否可以捕捉该信号并防止分段故障

不,不是。相反,修复错误并以这种方式防止分段错误。大概您的平台提供了某种调试器。

TL;博士: 不要试图阻止或忽略SIGSEGV。这只会给你带来痛苦

说明: SIGSEGV意味着发生了非常糟糕的事情,并且您的程序已经进入了不允许访问的内存。这意味着你的程序完全被水淹没了

请原谅我的加拿大人

你的程序坏了。你不能再相信它会以任何理性的方式表现,应该感谢SIGSEGV让你知道这一点。虽然你不想看到SIGSEGV,但它比一个坏程序继续运行并释放虚假信息要好得多

你可以用信号处理器捕捉SIGSEGV,但是说你确实捕捉并尝试处理它。很可能程序会直接返回到触发SIGSEGV的代码中,并且很可能在信号处理程序启动后再次引发它。或者做了其他奇怪的事。可能更糟

甚至不值得用信号处理程序捕捉SIGSEGV来尝试输出消息,因为消息会说什么?“哦,蓝精灵,发生了非常糟糕的事情。”

所以,是的,你可以抓住它,但你不能做任何事情来恢复。程序已损坏,无法继续。这就把防止SIGSEGV放在了第一位,这意味着修复代码

你能做的最好的事情就是确定程序崩溃的原因。最简单的方法是使用运行程序,等待崩溃,然后检查回溯以获取有关程序如何遭遇厄运的提示

通常可以在这里找到指向的链接,我想不出什么好的理由将其忽略


不过,还有一件事。cURL是一个非常可靠的库。极有可能是您错误地使用了它或向它传递了错误信息:一个无效指针、一个未终止的C样式字符串、一个指向爆炸性函数的指针。首先,我来看看您是如何使用cURL的。

实际上是另一种方式:发送SIGSEGV是因为您的应用程序崩溃了。另请参阅