Я создал файл 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
отличается, состоит в том, потому что Вы, вероятно, устанавливаете Ваш $PATH
в ~/.bahsrc
, который не читается графической средой. Это - также плохая идея, так как эти $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
я уверен, что Вы узнаете, существует ли ошибка или не в Вашей команде, присвоенной Exec
поле изнутри Вашего .desktop файла.
Для меня проблемой было отсутствие 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
, Который не особенно устойчив к изменениям в пользователе, но безотносительно.
Это могло бы помочь другим людям - это официальная спецификация настольных файлов средства запуска
, важный раздел: Распознанные настольные ключи записи - который показывает Вам, в каких значениях Вы нуждаетесь.
обычно, терминал (-вывод) дает Вам большую полезную информацию, обоих на приложении, а также файле на рабочем столе. Пример: если я запускаю свое приложение от терминала, вводя команду в терминале, приложение запускается.
Однако, если существует что-то не так, можно ожидать вывод как:
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'
jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code$
, который дает Вам большую полезную информацию, даже строка в Вашем приложении, которое вызывает ошибку. (Я испортил его нарочно)
то же с файлом на рабочем столе, просто откройте терминал в каталоге .desktop файла и перетащите его на терминале. Если Вы, например, удалите Exec=
строка из .desktop файла, то терминал скажет Вам, что это не может найти, что команда выполняется.
, Чтобы протестировать, если приложение дает ошибку, просто выполненную, что Вы помещаете после эти Exec=
строка.
терминальный вывод обычно очень конкретен и полезен в отчетах об ошибках, как здесь .