无法找到安装了 abrt-hook-cpp 的核心文件
Cannot locate core file with abrt-hook-cpp installed
我了解到,如果 abrt-ccpp.service 安装在 Linux PC 上,它 supersedes/overwrites(我都读过,不确定哪个是真的) 文件 /proc/sys/kernel/core_pattern
,否则指定核心文件的位置和文件名模式。
问题:
我执行systemctl
时,为什么abrt-ccpp.service在SUB
栏下报exited
? active
和exited
的组合我不明白:服务是"alive"/active/running吗?
> systemctl
UNIT LOAD ACTIVE SUB
abrt-ccpp.service loaded active exited ...
问题:
核心文件是在哪里生成的?我写这个程序来生成一个 SIGSEGV
:
#include <iostream>
int main(int argc, char* argv[], char* envz[])
{
int* pInt = NULL;
std::cout << *pInt << std::endl;
return 0;
}
编译执行如下:
> g++ main.cpp
> ./a.out
Segmentation fault (core dumped)
但是找不到核心文件的生成位置
我试过的:
- 在与我的
main.cpp
相同的目录中查找。核心文件不存在。
- 由于
/etc/abrt/abrt.conf
中的以下评论,在 /var/tmp/abrt/
中查看。核心文件不存在。
...
# Specify where you want to store coredumps and all files which are needed for
# reporting. (default:/var/tmp/abrt)
#
# Changing dump location could cause problems with SELinux. See man_abrt_selinux(8).
#
#DumpLocation = /var/tmp/abrt
...
- 因为 this link 上的评论而在
/var/spool/abrt/
中查看。核心文件不存在。
- 编辑
/etc/abrt/abrt.conf
并取消注释并设置 DumpLocation = ~/foo
这是一个现有目录。随后重新启动 abrt-hook-ccpp (sudo service abrt-ccpp restart
) 并重新运行 a.out
。 ~/foo/
中未生成核心文件
- 已验证
ulimit -c
报告 unlimited
。
我不知道还能尝试什么,还能去哪里寻找。
如果有帮助,这是我/proc/sys/kernel/core_pattern
的内容:
> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
谁能帮忙解释一下 abrt-hook-ccpp 服务的工作原理以及它在哪里生成核心文件?谢谢。
我想贷记 https://unix.stackexchange.com/users/119298/meuh who answered this at https://unix.stackexchange.com/questions/343240/cannot-locate-core-file-with-abrt-hook-cpp-installed。
答案是在文件 /etc/abrt/abrt-action-save-package-data.conf
中添加这一行
ProcessUnpackaged = yes
@daniel-kamil-kozar 的评论也是一个可行的解决方法。
我了解到,如果 abrt-ccpp.service 安装在 Linux PC 上,它 supersedes/overwrites(我都读过,不确定哪个是真的) 文件 /proc/sys/kernel/core_pattern
,否则指定核心文件的位置和文件名模式。
问题:
我执行systemctl
时,为什么abrt-ccpp.service在SUB
栏下报exited
? active
和exited
的组合我不明白:服务是"alive"/active/running吗?
> systemctl
UNIT LOAD ACTIVE SUB
abrt-ccpp.service loaded active exited ...
问题:
核心文件是在哪里生成的?我写这个程序来生成一个 SIGSEGV
:
#include <iostream>
int main(int argc, char* argv[], char* envz[])
{
int* pInt = NULL;
std::cout << *pInt << std::endl;
return 0;
}
编译执行如下:
> g++ main.cpp
> ./a.out
Segmentation fault (core dumped)
但是找不到核心文件的生成位置
我试过的:
- 在与我的
main.cpp
相同的目录中查找。核心文件不存在。 - 由于
/etc/abrt/abrt.conf
中的以下评论,在/var/tmp/abrt/
中查看。核心文件不存在。
...
# Specify where you want to store coredumps and all files which are needed for
# reporting. (default:/var/tmp/abrt)
#
# Changing dump location could cause problems with SELinux. See man_abrt_selinux(8).
#
#DumpLocation = /var/tmp/abrt
...
- 因为 this link 上的评论而在
/var/spool/abrt/
中查看。核心文件不存在。 - 编辑
/etc/abrt/abrt.conf
并取消注释并设置DumpLocation = ~/foo
这是一个现有目录。随后重新启动 abrt-hook-ccpp (sudo service abrt-ccpp restart
) 并重新运行a.out
。~/foo/
中未生成核心文件
- 已验证
ulimit -c
报告unlimited
。
我不知道还能尝试什么,还能去哪里寻找。
如果有帮助,这是我/proc/sys/kernel/core_pattern
的内容:
> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
谁能帮忙解释一下 abrt-hook-ccpp 服务的工作原理以及它在哪里生成核心文件?谢谢。
我想贷记 https://unix.stackexchange.com/users/119298/meuh who answered this at https://unix.stackexchange.com/questions/343240/cannot-locate-core-file-with-abrt-hook-cpp-installed。
答案是在文件 /etc/abrt/abrt-action-save-package-data.conf
ProcessUnpackaged = yes
@daniel-kamil-kozar 的评论也是一个可行的解决方法。