【发布时间】:2020-06-06 15:35:58
【问题描述】:
当 c/c++ 程序崩溃/segfault 时,系统会生成一个核心转储文件,然后我们可以使用 gdb 来检查每个核心转储文件的回溯。 但在某些情况下,程序可能不会崩溃,但我们还想检查回溯,即我们想为程序生成一个核心转储文件。有什么方法可以实现吗?
【问题讨论】:
-
您可以使用:github.com/JochenKalmbach/StackWalker 效果很好。
-
为什么不设置断点并查看回溯?为什么要为此生成核心转储?
-
raise(SIGTRAP) -
或者更好,如果你想在一个特定的地方回溯而不杀死进程
if (fork() == 0) raise (SIGTRAP); -
@Oliv:
SIGTRAP可以被抓到。SIGKILL不能,见signal(7)(假设是Linux系统)