神秘的程序崩溃:去哪里寻找线索?

神秘的程序崩溃:去哪里寻找线索?

在 Ubuntu 14.04 上,我经常遇到以下情况:打开应用程序,然后在 15 秒左右的时间内应用程序窗口从屏幕上消失。如果我ps aux | grep nameOfApplication它不会出现,那么某些东西已经关闭/杀死了它。这种情况只会在每个会话启动后发生一次,并且不会每次都发生。到目前为止,Firefox、Thunderbird 和 gnome-terminal 都发生过这种情况。在我的记忆中,Nautilus 从未发生过这种情况,我只是在 gnome-terminal 上经历过这种情况首先打开 Nautilus 并浏览到文件夹,因此不一定是第一个启动的应用程序被杀死。我的桌面环境是 cairo-dock,而不是 Unity,尽管我没有先验有理由怀疑 cairo-dock 是罪魁祸首。

我的问题:我可以在哪里寻找有关正在发生的事情及其原因的线索?这些崩溃不会触发apportwhoopsie,所以如果我找出原因,我的下一站应该是 Launchpad?


更新

几天没出现这个问题,但是今天早上又出现了。我启动,启动 Firefox,启动 gnome-terminal 并运行tail -f .xsession-errors,将焦点切换回 Firefox,然后几秒钟后 Firefox 消失了。这是 的初始尾部.xsession-errors;不幸的是,当 Firefox 消失时,没有添加任何内容:

[~] $ tail -f .xsession-errors
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated. please move it to /home/dan/.config/fontconfig/fonts.conf manually

** (gnome-terminal:2600): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-x4UUa9owca: Connection refused

(gnome-terminal:2600): GLib-GIO-CRITICAL **: g_settings_get: the format string may not contain '&' (key 'monospace-font-name' from schema 'org.gnome.desktop.interface'). This call will probably stop working with a future version of glib.
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated. please move it to /home/dan/.config/fontconfig/fonts.conf manually

** (gnome-user-share:2696): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-x4UUa9owca: Connection refused

** (telepathy-indicator:2698): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-x4UUa9owca: Connection refused

对我来说,这些看起来都是无关的,但我希望更有经验的用户会看到我没有看到的东西。

答案1

我首先从终端运行它。您已经说过您的图形终端是一个有问题的应用程序,因此请使用 TTY:

  1. Control+ Alt+F1到达 TTY1
  2. 登录。
  3. 运行DISPLAY=:0 gnome-terminal以在显示器上启动有问题的应用程序(如果您运行多个显示器,请显然更改显示器编号)。
  4. 使用Control++切换回X服务器并使用Gnome终端直到崩溃。AltF7
  5. 切换回 TTY1 并查看错误消息。

根据我的经验,无缘无故的死机通常归结为 RAM 问题或显卡驱动程序。这两个人中的任何一个都有足够的手指来做足够多的馅饼,足以引起很多头痛。

假设你没有找到一个好的 Google 错误消息,我会运行 memtest(从 grub 或 LiveCD/USB)并查看是否有更稳定的显卡驱动程序。然后更改内核版本。到此为止,它就与重现错误并注意您所做的更改一样重要。

答案2

通过 GUI 调用的程序的输出将发送到.xsession-errors您的主目录中的文件,因此您应该在此处查找线索。

由于所有程序的输出都发送到同一个地方,因此可能很难判断崩溃的程序的输出是什么。如果您希望能够获得特定程序的输出,请从终端启动它。在命令行上键入可执行文件的名称(例如firefox在 shell 提示符下键入),或将输出重定向到文件:

{ firefox; echo $?; } </dev/null >~/firefox-$(date).log 2>&1 & disown

发出此命令后,您可以关闭终端。

Firefox 的所有输出都将记录到您的主目录中名为的文件中。一旦 Firefox 退出,日志文件中的最后一行将是状态代码:0 表示正常退出,1–127 表示错误,128–255 表示 Firefox 由于信号而终止(例如 139 表示分段违规,即无效的指针访问)。firefox-DATE.log

频繁崩溃的主要原因有两个:

  • 视频驱动程序错误。如果您使用的是 Unity(默认)等 3D 环境,请尝试改用 2D 环境,例如不带 Compiz 的 LXDE。
  • 内存有缺陷。随着时间的推移,RAM 可能会变坏。测试你的内存。重新启动计算机,并Shift在看到有关键盘正在初始化的消息后立即按住;几秒钟后您应该会看到 Grub 启动菜单。 (如果您看不到启动菜单,请参阅按 Shift 键不会进入任何 grub 菜单.) 让测试运行至少一次完整通过。如果报告错误,请立即更换 RAM 并验证所有数据——坏 RAM 可能会导致潜在的数据损坏。

相关内容