1 votes

Obtenir la sortie d'erreur d'une application double-cliquée

Comment puis-je obtenir la sortie écrite dans stderr et stdout d'une application qui a été installée avec un fichier .dmg et qui est ouverte en double-cliquant sur l'icône de l'application dans le répertoire /Applications ?

(Je peux voir la sortie lorsque j'appelle l'application dans un terminal en utilisant le chemin /Applications/MyAppName.app/Contents/MacOS/myappname, mais cela ne m'aide pas car l'application se comporte différemment lorsque je double-clique sur l'icône.)

2voto

Tareq Points 1092

Cette réponse date de 2013 mais est toujours largement pertinente.

Avant Mountain Lion, tous les processus gérés par launchd, y compris les applications classiques, redirigeaient leurs descripteurs de fichiers stdout et stderr vers le journal système. À partir de Mountain Lion, stdout et stderr ne vont nulle part pour les applications gérées par launchd. Seuls les messages explicitement envoyés au journal système finiront là-bas.

Si vous écrivez une application et souhaitez que certaines sorties apparaissent dans la console, adoptez une API basée sur syslog(3) ou asl(3) à la place. NSLog est l'une de ces API, et elle a l'avantage de journaliser également vers stderr afin que vous puissiez facilement voir votre sortie peu importe comment vous avez lancé votre application. Si vous souhaitez cette fonctionnalité mais que vous voulez utiliser asl ou syslog directement, alors vous devrez vous intéresser à l'option ASL_OPT_STDERR pour asl_open, et à l'option LOG_PERROR pour openlog respectivement.

En gros, lorsque vous double-cliquez sur une appli (similaire à /usr/bin/open /Applications/SomeApp.app), il n'y a pas de stdout/stderr. Le développeur est censé envoyer toute sortie/erreurs pertinente aux API de journalisation disponibles telles que NSLog.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X