gpt4 book ai didi

用于安装 SIGSEGV 标准信号处理程序的通用 C 库

转载 作者:行者123 更新时间:2023-11-30 16:51:34 28 4
gpt4 key购买 nike

这里是否有任何具有诸如 install_default_signal_handlers() 之类的函数的 C 库,它将为 SIGSEGV 和相关信号安装一些默认信号处理程序,并且信号处理程序将在其中打印回溯?信号处理程序以及信号处理程序的安装应由库提供。

我认为backward-cpp使用 backward::SignalHandling sh; 对 C++ 执行此操作。

还有Google Breakpad但这可能有点过分了。

libSegFault这似乎可以做到这一点,但它似乎只在某些 Unixes 上可用(GlibC 的一部分,并且有一个 FreeBSD 实现),而不在 MacOSX 上可用。

一些相关的讨论是here但这主要讨论打印回溯的代码,但我搜索了一个为我提供信号处理程序的库。

最佳答案

在任何 *nix 系统上都没有安装 SIGSEGV 的默认处理程序。但您可以 1) 自己安装一个,2) 打印回溯,3) 然后退出。“退出”部分是必需的,因为对于某些信号,从其处理程序(如果已安装)返回未定义SIGSEGV 就是其中之一。

棘手的部分是 (2) - 打印回溯。 Glibc provides 3 interfaces :backtracebacktrace_symbolsbacktrace_symbols_fd。您可以使用合适的选项并打印堆栈跟踪。

如果您使用Glibc,那么您可能需要做更多的工作。例如,您可以使用 _Unwind_Backtrace,它在使用 gcc(不一定是 Glibc)的系统上可用。

关于用于安装 SIGSEGV 标准信号处理程序的通用 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41716409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com