C 强制FreeBSD应用程序生成核心文件
当应用程序/线程的SIGSEGV==11时,是否可以强制FreeBSD生成核心文件 我有一个应用程序正在这样做,但是,我认为这只是一个线程正在消亡,而可执行文件仍然在运行 此可执行文件作为服务运行-文件在哪里?我可以强制核心文件显示在/tmp或其他文件中吗 谢谢根据man信号,SIGSEGV应该总是生成一个核心文件 附带条件是,将在当前工作目录中生成核心文件,该目录通常是进程启动时的工作目录。我很确定你不能改变这种行为。请注意,有些程序是通过shell脚本启动的,该脚本在启动二进制文件之前会更改工作目录,因此您可以通过修改shell脚本来影响某些事情 根据,您还可以将GDB附加到正在运行的进程 如果您想在中心位置(如/tmp)收集核心文件,可以在cron中运行类似的操作:C 强制FreeBSD应用程序生成核心文件,c,unix,freebsd,C,Unix,Freebsd,当应用程序/线程的SIGSEGV==11时,是否可以强制FreeBSD生成核心文件 我有一个应用程序正在这样做,但是,我认为这只是一个线程正在消亡,而可执行文件仍然在运行 此可执行文件作为服务运行-文件在哪里?我可以强制核心文件显示在/tmp或其他文件中吗 谢谢根据man信号,SIGSEGV应该总是生成一个核心文件 附带条件是,将在当前工作目录中生成核心文件,该目录通常是进程启动时的工作目录。我很确定你不能改变这种行为。请注意,有些程序是通过shell脚本启动的,该脚本在启动二进制文件之前会更改
find ~ -name '*.core' -exec mv {} /tmp \;
根据man信号,SIGSEGV应始终生成核心文件
附带条件是,将在当前工作目录中生成核心文件,该目录通常是进程启动时的工作目录。我很确定你不能改变这种行为。请注意,有些程序是通过shell脚本启动的,该脚本在启动二进制文件之前会更改工作目录,因此您可以通过修改shell脚本来影响某些事情
根据,您还可以将GDB附加到正在运行的进程
如果您想在中心位置(如/tmp)收集核心文件,可以在cron中运行类似的操作:
find ~ -name '*.core' -exec mv {} /tmp \;
在Linux上,如果遇到这个问题,我会检查是否设置了ulimit-c unlimited。这可能也适用于FreeBSD。见此: 获取要终止的进程的pid: ps-ef | grep进程|名称 这会给你类似的东西:
user PID TID 0 etc
杀死-6 PID
确保进程已停止,再次运行此操作,它不会像以前那样显示进程
Linux上的ps-ef | grep PID如果遇到这个问题,我会检查是否设置了ulimit-c unlimited。这可能也适用于FreeBSD。见此: 获取要终止的进程的pid: ps-ef | grep进程|名称 这会给你类似的东西:
user PID TID 0 etc
杀死-6 PID
确保进程已停止,再次运行此操作,它不会像以前那样显示进程
ps-ef | grep PID您要查找的手册页是core5。您可能希望将kern.corefile设置为一个位置,在该位置您可以确保您具有写访问权限并且有足够的空间您要查找的手册页是core5。您可能希望将kern.corefile设置为一个位置,在该位置您可以确保自己具有写访问权限,并且有足够的空间
# sysctl kern.coredump
输出?如果为0,则应将其设置为1,即
# sysctl kern.coredump=1
什么事
# sysctl kern.coredump
输出?如果为0,则应将其设置为1,即
# sysctl kern.coredump=1
是的,这是可能的
#include <sys/resource.h>
// core dumps may be disallowed by parent of this process; change that
struct rlimit core_limits;
core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &core_limits);
有关更多信息,您可以阅读,是的,这是可能的
#include <sys/resource.h>
// core dumps may be disallowed by parent of this process; change that
struct rlimit core_limits;
core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &core_limits);
有关更多信息,请阅读,我对此表示怀疑。在发布此问题之前,我查找了所有核心文件,但没有发现任何核心文件,即使我看到进程抛出SEGFULTS。这些进程是否可能正在将其工作目录更改为不允许运行进程的用户具有写入权限的目录?服务正在以root用户身份运行。这难道不意味着我无论如何都能写作吗?不管怎样,我不知道任何代码/脚本中的工作目录会发生什么变化,但我不能发誓。这里没有足够的信息来回答您的问题。我不能测试你的代码,我不能复制你的环境。如果你想得到更多的答案,你需要提供更多。我对此表示怀疑。在发布此问题之前,我查找了所有核心文件,但没有发现任何核心文件,即使我看到进程抛出SEGFULTS。这些进程是否可能正在将其工作目录更改为不允许运行进程的用户具有写入权限的目录?服务正在以root用户身份运行。这难道不意味着我无论如何都能写作吗?不管怎样,我不知道任何代码/脚本中的工作目录会发生什么变化,但我不能发誓。这里没有足够的信息来回答您的问题。我不能测试你的代码,我不能复制你的环境。如果你想要更多的答案,你需要提供更多。谢谢-我以前见过这样的东西,但它不能解决我的问题-我的ulimit是unlimited@Derek这是你写的程序吗?还是第三方公关
克?它是否安装了忽略sigsegv的信号处理程序?你试过其他信号吗?西格伯特?您是否具有实际终止进程的适当权限?在你发出kill命令后,你能确认进程是死的吗?谢谢-我以前见过类似的东西,但它不能解决我的问题-我的ulimit是unlimited@Derek这是你写的程序吗?还是第三方程序?它是否安装了忽略sigsegv的信号处理程序?你试过其他信号吗?西格伯特?您是否具有实际终止进程的适当权限?在发出kill命令后,你能确认进程是死的吗?哇,你能在kern.corefile上指定一个路径吗?凉的谢谢Whoa-您可以在kern.corefile上指定路径吗?凉的谢谢