Как мне диагностировать «Произошла ошибка при запуске приложения»?

18

Я создал файл my-app.desktop для программы, которую я написал. Когда я дважды щелкните по нему, я получаю сообщение об ошибке « Произошла ошибка при запуске приложения ». Как я могу получить более подробную информацию о том, что проблема?

Я видел ссылку на раздел «подробности» диалогового окна, но в том, что я вижу, ничего подобного нет. Если бы я был на своем Mac, я бы открыл приложение Console, чтобы узнать, были ли зарегистрированы какие-либо ошибки, но я не узнал ничего подобного на Ubuntu.

(Обратите внимание, что в отличие от других аналогично названных вопросов, я не спрашиваю, что не так с этим конкретным файлом .desktop, я хочу знать, как узнать вообще.)

    
задан Kevin Reid 20.03.2014 в 17:48
источник

6 ответов

13

Вот трюк, который вы можете использовать. Создайте сценарий оболочки для своего приложения, которое запустит его и закроет вывод ошибки:

#!/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 отличается, потому что вы, вероятно, устанавливаете $PATH в ~/.bahsrc , которая не читается графической средой. Это также плохая идея, так как $PATH будет устанавливаться каждый раз, когда вы открываете новый терминал, и это лишние накладные расходы. Вместо этого используйте ~/.profile . Подробнее о том, какие файлы читаются, см. здесь и более подробно о том, какой файл следует использовать для чего, см. .

    
ответ дан terdon 20.03.2014 в 19:01
источник
4

Запустив следующую команду в терминале:

awk -F= '/Exec=/{system()}' your_desktop_file.desktop

Я уверен, что вы узнаете, есть ли ошибка или нет в вашей команде, назначенной в поле Exec из вашего файла .desktop.

    
ответ дан Radu Rădeanu 20.03.2014 в 19:56
3

обычно терминал (-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 <module>
    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'
[email protected]:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code$ 

, который дает вам много полезной информации, даже строку в приложении, которая вызывает ошибку. (Я испортил это специально)

То же самое с файлом рабочего стола, просто откройте терминал в каталоге файла .desktop и перетащите его на терминал. Если вы, например, удалите строку Exec= из файла .desktop, терминал сообщит вам, что не может найти команду для выполнения.

Чтобы проверить, дает ли приложение ошибку, просто запустите то, что вы положили после строки Exec= .

Вывод терминала обычно очень специфичен и полезен в отчетах об ошибках, например здесь .     

ответ дан Jacob Vlijm 20.03.2014 в 18:24
3

Найден ответ на этот вопрос здесь: Ссылка

Попробуйте следующее:

desktop-file-validate my-app.desktop

Он выводит ошибки в файле .desktop . Например, мой ответ:

error: first group is not "Desktrop Entry"

Итак, как только я исправил опечатку на Desktop Entry , скрипт успешно работал.

    
ответ дан Jimmy 13.09.2017 в 16:02
0

Это может помочь другим людям - это официальная спецификация файлов запуска рабочего стола

Важным разделом является: Распознаваемые ключи ввода рабочего стола - который показывает вам, какие значения вам нужны.

    
ответ дан Tony Suffolk 66 15.06.2014 в 17:50
-1

Для меня проблемой была отсутствующая строка 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

Что не особенно важно для изменений в пользователе, но что угодно.

    
ответ дан tsbertalan 22.04.2014 в 00:30