C ++中的Crash Handler

时间:2014-04-04 16:17:41

标签: c++ linux multithreading macos pthreads

我有一个守护进程工具,我需要在没有崩溃的情况下运行。我知道我可以注册信号并跳过除SIGKILL之外的所有信号,我也在我的应用程序中也这样做了。

我的守护进程是多线程的,我想知道是否由于线程中的某些代码而引发了SIGABRT信号,该线程是否会退出..?或者,如果我跳过SIGABRT信号,该线程将继续运行..?

假设我的应用因为此错误而上次崩溃

*** error for object 0x101800068: incorrect checksum for freed object - object was probably modified after being freed.

我是否可以保持我的线程运行,如果它没有退出并且会产生任何问题..?

我希望我的应用程序无论如何都能继续运行。我希望我的应用程序从错误中恢复,如进程重启。如果我可以退出所有线程,除了我的main()在崩溃信号期间并重新启动所有线程,它会更好。但据我所知,线程在信号期间没有退出。如何让我的所有线程在这些信号中退出,以便我可以重启它们??

1 个答案:

答案 0 :(得分:0)

[评论太久了]

有些情况下线程被强制关闭,如果一个线程发生故障,整个程序就会关闭。就是这样。

这与流程不同。

因此,构建更强大的多任务系统的一种方法是使用进程而不是线程,让每个进程受到另一个进程的崩溃监督和重启。 cource的后者也可以在崩溃时进行监督和重新启动,这反过来也可能是......

好吧,也许生成/编写不会崩溃的代码可能更有效。