如何将中止进程的详细信息捕获到日志文件中

如何将中止进程的详细信息捕获到日志文件中

在 Debian 下,守护进程启动并运行,直到它随机崩溃。我发现它有时会由于断言而中止,如果进程在前台运行,则会显示断言,例如:

/usr/include/boost/smart_ptr/shared_ptr.hpp:424: T* boost::shared_ptr::operator->() const [with T = libcage::dht::query]: 断言“px != 0”失败。已中止

退出代码是 134,但是如果进程在后台运行,如何将更详细的错误描述(可能有很多不同)保存到日志文件中以供稍后分析?

“2> /log/mylogfile” 不写入任何内容,“> /log/mylogfile” 忽略中止消息,写入进程输出。此外,“dmesg” 或 “kern.log” 中也没有任何内容。

答案1

您可以使用strace查看哪里出了问题。它将记录使用的系统调用、信号和返回值。

strace -v -s 256 -D -o /tmp/daemonlog daemonapp您只需查看执行详情即可。

-v:打印环境

-s 字符串大小:256 字节

-D 以分离的孙子进程形式运行 strace

-o 日志文件

答案2

如果你的守护进程使用“bash 脚本”,请在脚本开头添加“set -x”,然后重新启动进程并查看

相关内容