我在 gnome-shell 中遇到过很多 segv 崩溃,尽管 apport 窗口有很多信息,但它不是很用户友好(窗口真的很小,无法搜索,无法将副本保存到文本文件等)。
有没有办法让我直接从终端访问可用的信息?gnome-shell 是否将回溯日志保存在某处?
我知道 /var/log 中有一个 apport 的日志文件,但是该日志文件提供的详细程度几乎不一样。
答案1
您可以在 中找到这些文件/var/crash
。这几乎就是您问题的全部答案,因此为了让我的回答更有趣,我将向您展示我是如何知道这一点的,这可能会引起其他想要测试崩溃行为的人的兴趣。
$ cat ~/playground/crash.c
/* crash.c - simple program that crashes by raising a segmentation fault */
#include <signal.h>
int main(void)
{
raise(SIGSEGV);
}
上述程序由伊莱亚·卡根。我已将其编译为可执行二进制文件,位于crash
同一目录中(使用命令gcc -ansi -pedantic -Wall -Wextra -o crash crash.c
)。此程序可靠地出现段错误 :)
当我运行这个程序时,Bash 本身不会崩溃,所以 Apport 不会抱怨,但出于有趣的原因在这次聊天中详细讨论,当我使用 ksh 调用崩溃的程序时,ksh 本身也会崩溃,并且 Apport 会为其创建报告。让我们尝试一下!
zanna@toaster:/var/crash$ ksh93
$ /home/zanna/playground/crash
Memory fault(coredump)
$ exit
Segmentation fault (core dumped)
zanna@toaster:/var/crash$ ls
_bin_ksh93.1000.crash
zanna@toaster:/var/crash$ file _bin_ksh93.1000.crash
_bin_ksh93.1000.crash: ASCII text, with very long lines
就这样。
在您制作报告后,您将在这里获得另外 2 个文件,一个以 结尾.upload
,一个以 结尾.uploaded
,它们可能更易读,也可能不更易读,但无论如何,都包含 Apport 发送的信息。