如何诊断“启动应用程序时出错”?
我为我编写的程序创建了一个my-app.desktop
文件。 当我双击它时,我收到错误消息“ 启动应用程序时出错 ”。 如何获得有关问题的详细信息?
我看到了对话框的“详细信息”部分的引用,但是在我看到的那个部分中没有任何内容。 如果我在我的Mac上,我会打开控制台应用程序以查看是否记录了任何错误,但我还没有在Ubuntu上学到类似的东西。
(请注意,与其他类似标题的问题不同,我不是在问这个特定的.desktop文件有什么问题;我想知道如何找到一般的。)
这是你可以使用的技巧。 为您的应用程序创建一个包装器脚本,它将启动它并捕获错误输出:
#!/usr/bin/env bash ## Launch 'yourapp' and capture its standard error output /path/to/yourapp 2>~/myapp.log
将其保存为~/foo.sh
并使用chmod +x ~/foo.sh
使其可执行。 现在,将桌面启动器指向它。 就像是:
[Desktop Entry] Version=2.0 Type=Application Exec=/home/kevin/foo.sh Terminal=true Comment=My app!
这会将任何错误消息重定向到~/myapp.log
,您可以在闲暇时检查它们。 如果要将连续的错误消息附加到文件而不是覆盖它,可以使用2>>~/myapp.log
。
另外, $PATH
不同的原因是因为你可能在~/.bahsrc
设置$PATH
,这是图形环境无法读取的。 这也是一个坏主意,因为每次打开一个新终端时都会设置$PATH
,这是不必要的开销。 请改用~/.profile
。 有关在此处查看哪些文件以及有关应使用哪个文件的更多详细信息,请参阅此处 。
在这里找到这个问题的答案: https : //askubuntu.com/a/836842
试试这个 :
desktop-file-validate my-app.desktop
它会在.desktop
文件中输出错误。 例如我的回归:
error: first group is not "Desktrop Entry"
因此,一旦我将拼写错误更正为Desktop Entry
,脚本就会成功运行。
通过在终端中运行以下命令:
awk -F= '/Exec=/{system($2)}' your_desktop_file .desktop
我确信您将从.desktop文件中分配给Exec
字段的命令中发现是否有错误。
通常,终端(-output)为应用程序和桌面文件提供了大量有用的信息。 例如:如果我从终端运行我的应用程序,在终端中键入命令,则应用程序启动。
但是,如果出现问题,您可以预期输出如下:
Traceback (most recent call last): File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code/qle_quicklisteditor", line 4044, in MainWindow() File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code/qle_quicklisteditor", line 51, in __init__ self.load_sectons() AttributeError: 'MainWindow' object has no attribute 'load_sectons' jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code$
它为您提供了大量有用的信息,甚至是应用程序中导致错误的行。 (我故意搞砸了)
与桌面文件相同,只需打开.desktop文件目录中的终端并将其拖到终端上即可。 例如,如果您从.desktop文件中删除Exec=
行,终端将告诉您它无法找到要执行的命令。
要测试应用程序是否给出错误,只需运行Exec=
string之后放置的内容。
终端输出通常非常具体,在bug报告中很有用,就像这里一样。
这可能有助于其他人 – 这是桌面启动器文件的官方规范
重要的部分是:识别的桌面输入键 – 显示您需要的值。
对我来说,问题是缺少Icon=
行(这似乎是一个工作启动器的愚蠢要求)。 我的完整.desktop文件现在看起来像:
[Desktop Entry] Name=LiClipse Comment=Variant of Eclipse Exec=/home/tsbertalan/bin/liclipse Terminal=true Type=Application Icon=/home/tsbertalan/usr/liclipse/icon.xpm
这对用户的变化并不是特别强大,但无论如何。