abort()会收集核心转储,但我不希望该进程终止。 dump_core()收集核心转储,但在内核空间中。用户空间中是否有与dump_core()等效的函数?
答案 0 :(得分:2)
自己做的一个简单方法是fork
进程(创建父进程的完整副本)并从子进程调用abort
。
子进程将通过核心转储中止,而父进程继续进行,就像没有发生任何事情一样。
答案 1 :(得分:2)
答案 2 :(得分:1)
没有这样的Linux C命令。但是,您可能会找到一些可以为您执行此操作的第三方工具。例如,Google coredumper,它也应该能够捕获所有线程。另一种方法是将gdb
附加到正在运行的进程,并发出gcore
命令。这基本上是gcore命令行实用程序的功能。
答案 3 :(得分:1)
每当coredumps时,内核都会向进程生成SIGSEGV信号,我认为你应该将一个处理程序附加到SIGSEGV信号(Link)并从该处理函数调用fork。