Espionner une appli fini

Tout le monde connaà®t NSLog() pour observer le comportement de son application lors d?un Builb &Run lancé depuis XCode. Voici une solution pour voir son action quand on lance l?appli en dehors de XCode. 

Quelques essais sur un terminal:

% echo coucou >> ~/Library/Logs/perso.log
% echo coucou >> ~/Library/Logs/perso.log
% open  ~/Library/Logs/perso.log
% echo coucou >> ~/Library/Logs/perso.log
% echo coucou >> ~/Library/Logs/perso.log
% echo coucou >> ~/Library/Logs/perso.log
% echo bonne ann\303\251e 2007 >> ~/Library/Logs/perso.log


Dans le code de votre application, on peut alors glisser des mouchards :
   
system("echo coucou depuis mon appli >> ~/Library/Logs/perso.log");

ou plus sophistiqué

char str[1024]="";
sprintf(str,"echo Bonne année %d >>  ~/Library/Logs/perso.log",2007);
system(str);

Remarques :
1) L?application Console se trouve dans Applications>Utilitaires.
2) Si vous ne redirigez pas vers un fichier perso, le message va dans le fichier console général, que vous pouvez consulter par l?application Console. 
3) La redirection du message par >> est opérationnelle sous la plupart des shells, mais cela peut changer ...
4) Renaud peut nous faire de belles macros pour simplifier tout cela.

Réponses

  • elfelf Membre
    00:27 modifié #2
    Les NSLog(); ça te log aussi lors d'un release normal.

    Si il n'y a pas de log d'habitude, c'est simplement que les dévelopeurs enlêvent les NSLog avant de publier l'app... Mais si ils les laissait tu les verrais dans la console.

    Edit: par contre, si tu tiens vraiment à  utiliser ton truc, fais une macro, c'est plus simple / lisible.
  • 00:27 modifié #3
    Je suis fiché je vois!

    Bon, ma contribution à  2 sous: NSLog fonctionne toujours lorsqu'on ne lance pas l'appli depuis Xcode, les messages sont inscrits dans le fichier /Library/Log/Console/xxx/console.log où xxx est le numéro "système" de l'utilisateur courant (pas besoin de chercher en fait c'est celui qui vient par défaut quand on ouvre l'utilitaire Console).

    Sinon une autre astuce que j'utilise parfois dans ce genre de cas est simplement d'envoyer des notifs Growl (ça a des limitations, mais c'est assez pratique je trouve).
  • Philippe49Philippe49 Membre
    00:27 modifié #4
    Ok Merci, on gagne du temps ainsi.

    ;)
Connectez-vous ou Inscrivez-vous pour répondre.