如何诊断“启动应用程序时出错”?

我为我编写的程序创建了一个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 

这对用户的变化并不是特别强大,但无论如何。