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


18

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

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

Answers:


14

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

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

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


6

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

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


1
“这全部是假设您是一名程序员。如果您不是……那么,您无论如何都无法解决崩溃问题!” 使用开放源代码,我们所有人都可以尝试解决我们的问题,这需要您自担风险;)
Strae 2010年

@DaNiel:不是!如果您不是程序员,并且对应用程序代码没有很好的了解,那么您可能会对使用Buggier的代码越感兴趣:)
AntonioCS 2010年

1
即使您不是程序员,有时查看核心转储也可以使您对该问题有所了解。例如,似乎在某种图形例程中崩溃了–也许我应该更新我的显示驱动程序了……
user1242 2010年

2
..并且它有助于描述错误报告/论坛中的错误;)
Strae 2010年

1
您知道可以使用gdb的非程序员吗?我是一名程序员,甚至可以说bt full“哦,回溯……缺少符号...猜测我需要安装调试符号并尝试重现崩溃...”我曾经想出了如何设置一个断点...这是我所拥有的最先进的。
maco 2010年

3

对于conky,也可能是中有条目$HOME/.xsession-errors


2

某些应用程序具有可用于打开调试的标志,例如-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以获取手持建议。


毫无疑问

1

您可以转至,/var/log/messages or crashes然后在其上运行grep命令并搜索应用程序,有时您寻找的文件可能会很大。它将返回与您的应用有关的信息。:)


1

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


这是做什么的?我已经有了这个设置,它没有记录任何额外的信息。
马特

我试图通过编辑答案来回答您的问题。这有意义吗?
Selah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.