web-dev-qa-db-fra.com

Comment diagnostiquer "Une erreur s'est produite lors du lancement de l'application"?

J'ai créé un fichier my-app.desktop pour un programme que j'ai écrit. Lorsque je double-clique dessus, je reçois le message d'erreur "ne erreur s'est produite lors du lancement de l'application". Comment puis-je obtenir des informations plus détaillées sur le problème?

J'ai vu une référence à une section "détails" de la boîte de dialogue, mais il n'y a rien de tel dans celle que je vois. Si j'étais sur mon Mac, j'ouvrirais l'application console pour voir si des erreurs étaient consignées, mais je n'ai rien appris de semblable sur Ubuntu.

(Notez que contrairement à d'autres questions portant le même titre, je ne demande pas ce qui ne va pas avec ce fichier .desktop en particulier; je veux savoir comment le savoir en général.)

25
Kevin Reid

Voici une astuce que vous pouvez utiliser. Créez un script de wrapper pour votre application qui le lancera et capturera le résultat d'erreur:

#!/usr/bin/env bash

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

Enregistrez cela sous ~/foo.sh et rendez-le exécutable avec chmod +x ~/foo.sh. Maintenant, pointez votre lanceur de bureau dessus. Quelque chose comme:

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

Cela redirigera tous les messages d'erreur vers ~/myapp.log et vous pourrez les examiner à votre guise. Vous pouvez utiliser 2>>~/myapp.log si vous souhaitez que des messages d'erreur successifs soient ajoutés au fichier au lieu de l'écraser.


En passant, la raison pour laquelle $PATH est différent est parce que vous définissez probablement votre $PATH dans ~/.bahsrc qui n'est pas lu par l'environnement graphique. C'est également une mauvaise idée car le $PATH sera défini à chaque fois que vous ouvrez un nouveau terminal, ce qui représente une surcharge inutile. Utilisez ~/.profile pour cela à la place. Pour plus de détails sur les fichiers lus quand voir ici et pour en savoir plus sur le fichier à utiliser pour quoi, voir ici .

15
terdon

Vous avez trouvé une réponse à cette question ici: https://askubuntu.com/a/836842

Essaye ça :

desktop-file-validate my-app.desktop

Il génère des erreurs dans votre fichier .desktop. Par exemple le mien est retourné:

error: first group is not "Desktrop Entry"

Donc, une fois que j'ai corrigé la faute de frappe en Desktop Entry, le script a été exécuté avec succès.

14
Jimmy

En exécutant la commande suivante dans le terminal:

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

Je suis sûr que vous saurez s'il y a une erreur ou non dans votre commande affectée au champ Exec à l'intérieur de votre fichier .desktop.

7
Radu Rădeanu

généralement, le terminal (-output) vous fournit de nombreuses informations utiles, à la fois sur l'application et sur le fichier de bureau. Un exemple: si j'exécute mon application à partir du terminal en tapant la commande dans le terminal, l'application démarre.

Cependant, s'il y a quelque chose qui ne va pas, vous pouvez vous attendre à une sortie comme:

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$ 

ce qui vous donne beaucoup d'informations utiles, même la ligne dans votre application qui provoque l'erreur. (Je l'ai foiré exprès)

De même avec le fichier desktop, ouvrez simplement un terminal dans le répertoire du fichier .desktop et faites-le glisser sur le terminal. Si, par exemple, vous supprimez la ligne Exec= d'un fichier .desktop, le terminal vous indiquera qu'il ne trouve pas la commande à exécuter.

Pour vérifier si l'application génère une erreur, exécutez ce que vous avez mis après la chaîne Exec=.

La sortie du terminal est généralement très spécifique et utile dans les rapports de bugs, comme here .

3
Jacob Vlijm

Quand je ne peux vraiment pas comprendre, je:

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

Cliquez ensuite avec le bouton droit sur l'icône par défaut créée et pointez vers un meilleur graphique.

0
Tom

Cela pourrait aider d’autres personnes - c’est le spécifications officielles des fichiers du programme de lancement du burea

La section la plus importante est: Les clés d’entrée de bureau reconnues - qui vous indiquent les valeurs dont vous avez besoin.

0
Tony Suffolk 66