Bagaimana cara mendiagnosis "Ada kesalahan saat meluncurkan aplikasi"?

26

Saya membuat my-app.desktopfile untuk program yang saya tulis. Ketika saya mengklik dua kali, saya mendapatkan pesan kesalahan " Ada kesalahan meluncurkan aplikasi ". Bagaimana saya bisa mendapatkan informasi lebih rinci tentang apa masalahnya?

Saya melihat referensi ke bagian "perincian" pada kotak dialog, tetapi tidak ada yang seperti itu di bagian yang saya lihat. Jika saya menggunakan Mac, saya akan membuka aplikasi Konsol untuk melihat apakah ada kesalahan yang dicatat, tetapi saya belum mengetahui hal serupa di Ubuntu.

(Perhatikan bahwa tidak seperti pertanyaan lain yang sejenisnya, saya tidak menanyakan apa yang salah dengan file .desktop khusus ini; Saya ingin tahu bagaimana cara mencari tahu secara umum.)

Kevin Reid
sumber
1
Saya hanya akan menjalankan baris Exec dari terminal dan melihat apa yang dikatakan output kepada Anda, tetapi apakah Anda yakin file desktopnya ok? mungkin Anda harus memeriksa dan menjalankannya dari terminal juga.
Jacob Vlijm
@ Jacob Jika ada cara untuk "menjalankannya dari terminal" yang menempatkan sesuatu yang berguna di stderr, itu akan menjadi jawaban untuk pertanyaan ini.
Kevin Reid
1
@terdon saya mencobanya, dan ternyata (sebagai masalah berikutnya ) lingkungannya berbeda dalam hal yang berarti. Saya ingin tahu cara mendapatkan lebih banyak informasi dari proses peluncuran normal sehingga saya tidak menebak apa yang berbeda.
Kevin Reid
2
@terdon Secara empiris, menjalankannya di terminal berbeda - saya sudah mencoba dan berbeda (khususnya berbeda PATH). Saya ingin tahu cara mendapatkan lingkungan yang persis sama dengan peluncuran normal tetapi dengan lebih banyak info diagnostik.
Kevin Reid
2
Sedikit offtopic, tetapi 9 kali dari 10 masalah yang ditayangkan itu adalah karakter khusus, seperti spasi, di Exec=jalur. Ingat, Anda harus memiliki Exec=tanda kutip dan Path=tanpa tanda kutip.
Barafu Albino

Jawaban:

15

Inilah trik yang bisa Anda gunakan. Buat skrip pembungkus untuk aplikasi Anda yang akan meluncurkannya dan menangkap output kesalahan:

#!/usr/bin/env bash

## Launch 'yourapp' and capture its standard error output
/path/to/yourapp 2>~/myapp.log

Simpan itu sebagai ~/foo.shdan buat itu bisa dieksekusi dengan chmod +x ~/foo.sh. Sekarang, arahkan peluncur desktop Anda ke sana. Sesuatu seperti:

[Desktop Entry]
Version=2.0
Type=Application
Exec=/home/kevin/foo.sh
Terminal=true
Comment=My app!

Itu akan mengarahkan pesan kesalahan apa pun ke ~/myapp.logdan Anda dapat memeriksanya sesuka Anda. Anda dapat menggunakan 2>>~/myapp.logjika Anda ingin agar pesan kesalahan berturut-turut ditambahkan ke file alih-alih menimpanya.


Selain itu, alasan $PATHperbedaannya adalah karena Anda mungkin mengatur $PATHdi ~/.bahsrcmana Anda tidak dibaca oleh lingkungan grafis. Ini juga merupakan ide yang buruk karena $PATHakan ditetapkan setiap kali Anda membuka terminal baru dan itu overhead yang tidak perlu. Gunakan ~/.profileuntuk ini sebagai gantinya. Untuk perincian lebih lanjut tentang file mana yang dibaca ketika lihat di sini dan untuk lebih banyak file mana yang harus digunakan untuk apa, lihat di sini .

terdon
sumber
Tidak menemukan masalah dengan cara ini, tetapi pembungkusnya berfungsi, jadi saya hanya menyimpan pembungkusnya sebagai executable.
Jānis Elmeris
16

Temukan jawaban untuk pertanyaan ini di sini: /ubuntu//a/836842

Coba ini :

desktop-file-validate my-app.desktop

Ini menghasilkan kesalahan dalam .desktopfile Anda . Misalnya milik saya dikembalikan:

error: first group is not "Desktrop Entry"

Jadi, begitu saya memperbaiki kesalahan ketik Desktop Entry, skrip berjalan dengan sukses.

Jimmy
sumber
7

Dengan menjalankan perintah berikut di terminal:

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

Saya yakin Anda akan mengetahui apakah ada kesalahan atau tidak dalam perintah Anda yang ditugaskan ke Execbidang dari dalam file .desktop Anda.

Radu Rădeanu
sumber
5
Saya punya masalah serupa. saya menjalankan perintah Anda dan file my.desktop bekerja dengan sempurna. Tapi ketika saya klik dua kali, itu menunjukkan ada kesalahan meluncurkan aplikasi
Sayantan Koley
Jawaban ini agak lucu, karena (walaupun saya pikir itu tidak lebih dari menjalankan nilai Exec di shell) itu membuat saya sadar bahwa kunci TryExec adalah masalah saya.
mirh
3

biasanya, terminal (-output) memberi Anda banyak informasi berguna, baik pada aplikasi maupun file desktop. Contoh: jika saya menjalankan aplikasi dari terminal, mengetik perintah di terminal, aplikasi akan dimulai.

Namun, jika ada sesuatu yang salah, Anda dapat mengharapkan output seperti:

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$ 

yang memberi Anda banyak informasi berguna, bahkan baris di aplikasi Anda yang menyebabkan kesalahan. (Aku sengaja mengacaukannya)

Sama dengan file desktop, cukup buka terminal di direktori file .desktop dan seret ke terminal. Jika Anda misalnya menghapus Exec=baris dari file .desktop, terminal akan memberi tahu Anda tidak dapat menemukan perintah untuk dijalankan.

Untuk menguji apakah aplikasi memberikan kesalahan, jalankan saja apa yang Anda masukkan setelah Exec=string.

Output terminal biasanya sangat spesifik dan berguna dalam laporan bug, seperti di sini .

Yakub Vlijm
sumber
2
Saya tahu tentang cara menggunakan terminal dan cara memecahkan masalah peluncuran program secara umum. Dengan asumsi pendekatan ini, apa yang perlu saya ketahui adalah bagaimana mereproduksi kondisi peluncuran .desktop secara akurat di terminal .
Kevin Reid
0

Ketika saya benar-benar tidak bisa mengetahuinya, saya:

cd ~/Desktop
ln -s /my/binary/thatIwanttorun mybinary

Kemudian klik kanan pada ikon default yang dibuat dan arahkan ke grafik yang lebih baik.

Tom
sumber
dan harus ada <cr> setelah "cd ~ / Desktop"
Tom
-1

Bagi saya, masalahnya adalah Icon=garis yang hilang (yang tampaknya seperti persyaratan bodoh untuk peluncur yang berfungsi). File .desktop lengkap saya sekarang terlihat seperti:

[Desktop Entry]
Name=LiClipse
Comment=Variant of Eclipse
Exec=/home/tsbertalan/bin/liclipse
Terminal=true
Type=Application
Icon=/home/tsbertalan/usr/liclipse/icon.xpm

Yang tidak terlalu kuat untuk perubahan pengguna, tetapi apa pun.

tsbertalan
sumber