【发布时间】:2012-01-09 13:34:03
【问题描述】:
我有 C++ 软件(服务器)和它的崩溃,我不知道确切
问题基于日志。我想做一些 linux 之后的东西
崩溃或退出该过程的转储,我将以某种方式导入此
向gdb 提交文件并分析不应该做的事情。
过去有人做过吗? 有人可以帮我提供一些信息方面的想法吗?
谢谢!
【问题讨论】:
标签: c++ linux gdb crash-dumps
我有 C++ 软件(服务器)和它的崩溃,我不知道确切
问题基于日志。我想做一些 linux 之后的东西
崩溃或退出该过程的转储,我将以某种方式导入此
向gdb 提交文件并分析不应该做的事情。
过去有人做过吗? 有人可以帮我提供一些信息方面的想法吗?
谢谢!
【问题讨论】:
标签: c++ linux gdb crash-dumps
您需要的是一个常规的核心转储,它与 GDB 一起查找崩溃位置。 有关信息,请参阅http://linux.die.net/man/5/core。
如果守护进程没有当前目录的写权限,则不会生成内核。要重定向它,请尝试;
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern
【讨论】:
-g -Wall 标志编译它们到gcc 编译器会很有帮助。
gdb /path/to/daemon core进行调试
您在寻找核心文件吗?在启动你的守护进程的脚本中,添加这个命令(假设脚本的解释器是bash):
ulimit -c unlimited
将核心文件的最大大小设置为“无限”(默认情况下通常为 0)。
【讨论】:
rwx。
正如其他人所说,您可以获得核心转储文件。请务必正确配置您的环境。
另一种方法是,一旦守护程序已经在运行并且在它崩溃之前,它是通过调试器attach 它。
你也可以用gdb --args启动你的守护进程/path/to/daemon daemon-arguments ...
【讨论】: