我有一个C++应用程序,其中有许多线程,大部分的线程堆栈大小为32k。问题是有时会发生stack overflow,并且我想检测哪个线程导致了这个stack overflow,并将其写入日志文件,但问题是我无法捕获它。
我阅读了有关 SIGSEGV
的文档,但只能在没有线程的情况下捕获此信号。我还尝试使用 pthread_sigmask()
和 libsigsegv,但也失败了。
是否有人可以向我展示一个小例子,说明如何在线程中发生stack overflow时捕获 SIGSEGV
?