C++ 在c+中发生堆栈溢出时获取SIGSEGV+;

C++ 在c+中发生堆栈溢出时获取SIGSEGV+;,c++,segmentation-fault,C++,Segmentation Fault,因此,我最近编写了一个代码,当SIGSEGV信号发生时,比如试图使用统一化指针时,它会处理SIGSEGV信号。但是,由于某些原因,堆栈溢出(如valgrind所示)无法调用SIGSEGV信号处理程序 这是标准行为,还是仅仅是GCC的怪癖 另外,因为我一直在使用backtrace()功能来找出哪里出了问题,所以假设这是不可访问的,因为堆栈溢出意味着不可能获得堆栈跟踪(例如堆栈太大而无法打印等)是正确的吗 对于谷歌信息来说,这是非常困难的,因为任何与“堆栈溢出”有关的东西都会转到这个站点。,没有任何

因此,我最近编写了一个代码,当SIGSEGV信号发生时,比如试图使用统一化指针时,它会处理SIGSEGV信号。但是,由于某些原因,堆栈溢出(如valgrind所示)无法调用SIGSEGV信号处理程序

这是标准行为,还是仅仅是GCC的怪癖

另外,因为我一直在使用backtrace()功能来找出哪里出了问题,所以假设这是不可访问的,因为堆栈溢出意味着不可能获得堆栈跟踪(例如堆栈太大而无法打印等)是正确的吗


对于谷歌信息来说,这是非常困难的,因为任何与“堆栈溢出”有关的东西都会转到这个站点。

,没有任何东西可以堆栈溢出或者C++中的信号,具有讽刺意味。因此,您看到的这种行为是某些未定义行为的特定于平台的表现。

当堆栈溢出时,除了调用systemcall之外,不可能调用任何东西,因为functioncall会向溢出的堆栈添加更多内容。

啊,我明白了。。我想我会被valgrind困住。。谢谢双人免费怎么样?glibc似乎劫持了错误处理。@Kamziro:我打赌它只劫持了调试模式下的处理。捕获诸如
SIGSEGV
SIGABRT
之类的致命信号只有在父进程中捕获它们时才有意义。“实际上,很难用谷歌搜索有关这方面的信息,因为任何与“堆栈溢出”相关的信息都是如此。”“转到此站点”-请尝试“stack overflow-site:stackoverflow.com”来修复该问题。