it-swarm.cn

当应用程序崩溃而没有输出错误时,是否可以检查日志?

有时会发生某些应用程序崩溃而没有给出任何输出错误的情况(在我的情况下,conky,这可能是我的配置之一不正确)。

我可以检查某个错误日志来了解为什么它崩溃了吗?

18
Strae

取决于应用程序。不同的应用程序具有不同的日志记录系统。没有一个中央日志包含系统上运行的所有程序的所有输出。

话虽如此,许多程序确实将其日志文件放在目录/var/log中。尤其是文件/var/log/syslog(或者可能是/var/log/messages)包含“系统记录器”的输出,这是系统提供的服务,程序可以使用该服务(如果愿意)进行记录。但并非所有程序都使用它。通常,您会在该文件中找到来自低级系统服务的消息,而不是通常可能使用的图形应用程序。

您可能需要阅读 有关标准日志文件位置的更多信息

14
David Z

崩溃文件进入/var/log/crashes/,与Apport一起报告错误。您可以使用apport-unpack提取核心转储,将该核心转储放入gdb,然后找出导致程序崩溃的原因。

所有这些都假设您是一名程序员。如果不是...那么,您还是无法修复崩溃!

6
maco

对于conky,也可能是$HOME/.xsession-errors

3
qbi

某些应用程序具有可用于打开调试的标志,例如-d,-D,-debug等。请检查应用程序的手册页(man [my-app])或运行带有-h标志的应用程序以查看其是否具有此类选项。

许多GUI应用程序都会写入$ HOME/.xsession-errors,因此这是检查输出的好地方。

maco认为分配权限可能是获取良好调试信息的最可靠方法。但是,有时它无法捕获崩溃。

如果所有其他方法都失败了,您还可以通过在gdb中运行该应用程序来强制删除该信息。就像这样:

$ gdb my-app

(gdb) run

...尽一切可能使其崩溃...

(gdb) bt full

然后从那里去。

如果您使用gdb路由,您还将需要安装符号,如前所述。请参阅 https://wiki.ubuntu.com/DebuggingProgramCrash 了解手持建议。

2
Bryce

你可以去/var/log/messages or crashes,然后您可以在这些文件上运行grep命令,然后搜索您要查找的文件的应用程序有时会变得很大。它将返回与您的应用有关的信息。 :)

1
myusuf3

如果要从.desktop启动器文件启动应用程序,请添加选项Terminal=true到您的.desktop文件。这将在您运行程序时打开一个终端,该终端上的输出将与您首先通过命令行运行该程序时看到的输出相似。这样,当GUI崩溃或挂起时,您可以看到导致它的文本输出。

1
Selah