c - 如何在不崩溃 c 中的进程的情况下生成核心转储?

标签 c memory stack-trace

是否可以在不使进程崩溃的情况下生成用于调试目的的小型核心转储。比方说,如果函数接收到意外值,仅打印日志并优雅地返回可能不足以调试问题。另一方面,如果我可以获得内存的屏幕截图并查看堆栈,我可以找到更多有用的调试信息。

最佳答案

是的,

根据 gdb 的 documentation ,一旦与 gdb 连接,您可以发出以下命令:

(gdb) gcore
(gdb) q

这会将核心转储到“core.pid”而不会导致进程崩溃。

或者这个单行:

sudo sh -c 'echo gcore <output_core> | gdb -p <pid>'

关于c - 如何在不崩溃 c 中的进程的情况下生成核心转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060875/

相关文章:

c - realloc 失败的可能性有多大?

c++ - 如果我在代码的 printf 部分中使用 %s 而不是 %c,代码背后的解释

javascript - 在 V8 中,为什么预分配数组消耗更少的内存?

ios - 第二次分配属性时是否立即释放对象?

java - 自定义运行时异常不打印堆栈跟踪

c - Linux 下的 TCP 客户端/服务器

c++ - qsort是否使用堆内存?

java - JVM 何时会在堆栈跟踪中省略行信息,我该如何防止它发生?

应用程序启动崩溃的 iOS BugSense 堆栈跟踪

C中的循环(ring)缓冲区写入方法