【发布时间】:2011-09-19 11:37:14
【问题描述】:
以下问题描述为 windows How to create minidump for my process when it crashes?
但是如何在 linux 上创建迷你崩溃文本转储?
【问题讨论】:
以下问题描述为 windows How to create minidump for my process when it crashes?
但是如何在 linux 上创建迷你崩溃文本转储?
【问题讨论】:
您需要编写一个信号处理程序。
这里有一个幻灯片演示如何做到这一点:
http://www.scribd.com/doc/3726406/Crash-N-Burn-Writing-Linux-application-fault-handlers
这是幻灯片中的代码:
【讨论】:
我不确定您是否可以获得与 .NET MiniDump 完全相同的内容 - 但您将能够在 Linux 上生成核心转储,该转储应该获得您所需要的信息。确保通过发出如下命令启用核心文件:
ulimit -c unlimited
这也会将核心转储的最大大小设置为unlimited - 您可以根据自己的意愿对其进行调整,以实现您问题的“迷你”方面。 man ulimit 是你这里的朋友。
然后,运行您的进程并在它运行时将其杀死。我通常发送的信号是SIG_ABRT(信号6),如下:
kill -6 <pid>
如果您不知道 pid 是什么,或者如何获取 pid,您可能需要在 Linux 上阅读更多内容。
【讨论】:
-g 标志(调试符号)编译的,这样您就可以理解核心转储。您还可以使用信号名称(不带SIG 前缀)来代替kill,这样您就不必记住数字:kill -ABRT <pid>