我的程序是用C/C++编写的,并使用-ggdb标志进行编译。并希望看到正在生成的corefiles。当进程在后台运行时,不会生成Coredumps
我从下面的脚本调出程序。
#!/bin/sh
#
# Starts the application.
#
NAME=my_app
test -x /usr/bin/my_app || exit 0
start() {
echo -n "Starting my app "
$NAME > /dev/null 2>&1 &
sysctl -w kernel.core_pattern='/var/core/%e.%p.%h.%t.core'
ulimit -c unlimited
echo "OK"
}
对于测试,我添加了下面的崩溃语句。
char z[100];
std::strncpy(z, NULL, 100);
当我的应用程序从外壳(bash)的运行,甚至当它在后台的运行使用“&”我可能会产生corefiles。 但是,当它从上面的脚本启动时,不会生成核心文件。
我在这里做错了什么?或者有没有其他的方法来解决这个问题? 谢谢
您的脚本_first_运行您的应用程序,然后设置核心文件位置 – Swift
您的程序写入的语言是不相关的。内核不关心。 –
更改报表的顺序。 “ulimit -c unlimited”应该是第一条语句,那么它应该开始工作 – rajesh6115