![应用程序启动失败的错误消息在哪里?](https://linux22.com/image/1169660/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5%E7%9A%84%E9%94%99%E8%AF%AF%E6%B6%88%E6%81%AF%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
我为所有用户创建了一个简单的桌面条目/usr/share/applications/pycharm-foo.desktop
[Desktop Entry]
Name=PyCharm foo
Icon=/usr/share/pixmaps/python2.7.xpm
Exec=pycharm-wrapper foo
Terminal=false
Type=Application
Categories=Application
该应用程序可通过 Windows 键(启动器/破折号)找到。
但是如果应用程序失败并在 stdout/stderr 上显示消息,那么我希望查看该消息。
在哪里可以找到应用程序启动失败的错误消息?
答案1
这个问题可能与以下内容重复:
有两个答案:
- 检查日志内容
~/.xsession-errors
, - 调用命令时重定向输出:
command >~/log/command.out.log 2>~/log/command.err.log
此外,如果知道进程 ID,请查看其1
stdout 和2
stderr 的文件描述符。Unix 和 Linux 对此有详细描述:
简单总结一下得票最高的答案:
lsof -p1234 | awk '$4 ~ /^[12][^0-9]/'
ls -l /proc/1234/fd/[12]
当然,最常见的方法是简单地从命令行调用 GUI,然后终端窗口将显示警告和错误消息:
$ zenity --info --text "Hello World"
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
答案2
出色地,
写入日志的唯一文件夹通常是 /var/log。就您而言,您要查找的信息可能位于不同位置,因为开发人员可以选择不同的位置,或者可能决定将日志写入他/她自己的位置。
它可能在 /var/log/syslog 中 - syslog 中包含所有来自系统本身的日志,但也包含被编程为直接写入 syslog 的程序。
然后应该有类似 /var/log/gdm3 的内容 - 这是 gnome 窗口管理器的日志文件。因此,如果 gnome 识别出 smtg。或者本身出现问题,它会将其记录在那里。
您是否考虑过将其写入您自己的文件夹?您可以简单地将日志文件附加到您的命令中,然后数据就会写入其中(根据您的设置方式)。
这是我今天第二次链接到这里,哈哈。看这里,因为你正在使用一个 Python 应用程序(看起来像),这个链接应该对你有用,我的朋友。试一试。
尝试像这样启动你的python包装器pycharm-wrapper foo &>> /home/$(whoami)/mylogfile.log
下次开始之前,请务必跟踪这一点。打开控制台并输入tail -f /home/($whoami)/mylogfile.log
。然后启动 Python 包装器并查看控制台,看看是否显示错误。
答案3
我找不到任何相关文档,而且正如前面所述,根据程序开发人员所做的日志记录选择,您将获得不一致的结果。也许他们将错误发送到 stderr,也许发送到 stdout,也许在发生错误时返回非零值,也许不返回。也许您会得到一页页堆栈跟踪无用信息,而这些页面无法在对话框中显示。
我使用 bash 脚本包装器取得了一些成功,它运行您传递给它的命令行并将所有输出发送到通知:
notify-send "$($* 2>&1)"
但我预计结果会不一致。
答案4
老实说,我会做的就是使用以下内容:
sudo su root
updatedb
cd /var/log
grep pycharm * > results.txt
cat results.txt
这应该告诉您在日志中提到了 pycharm 的文件,然后您甚至可以使用以下命令进一步过滤:
cat results.txt | grep *error*
也许可以使用失败或死亡而不是错误来尝试缩小结果范围。