在 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”,然后重新启动进程并查看