# Ecrire dans un fichier l'utilisation CPU et mémoire



## Vampyre (12 Novembre 2010)

Bonjour à tous !

Bon, bah très rapidement, voici mon problème. Il y a peu, j'ai découvert un jeu bien sympathique sur OS X. Une fois téléchargé, j'ai commencé à jouer à la démo, avant de passer à la caisse, et voir si le jeu me convient vraiment.

Pas de chance, ce jeu plante chez moi (ainsi que chez quelques autres personnes qui m'ont rejoint dans ma demande de correction aux développeurs). Le problème est que chez ces mêmes développeurs, cette erreur est non reproductible, alors qu'elle l'est bien chez nous (une petite dizaine à nous être investis dans la démarche). Nous nous sommes mis en tête de faire les tests pour que les développeurs trouvent un point commun à nos crashs, et tente de réparer. Après de nombreux tests, je pense arriver à une conclusion, mais pour cela il me faudrait pouvoir la prouver, et la montrer aux développeurs.

Pour ce faire, j'aurais besoin d'enregistrer dans un fichier lisible la charge CPU et mémoire du processus, et ce, sur une durée d'environs 2 heures (1 fois par minute me semble pas mal, mais si c'est possible d'aller plus vite, on risque de voir une tendance plus générale se dessiner). Le but serait de vérifier que la charge mémoire va en augmentant avec le temps, jusqu'au crash du jeu.

Après quelques recherches sur Google, je suis bien tombé sur top, dont un des paramètres est -pid, mais lorsque j'utilise la commande top >textfile.txt, c'est totalement illisible et inutilisable.

Quelqu'un d'entre vous pourrait-il me rediriger vers n'importe quelle forme de script (bash, automator, applescript, peut importe), et qui me permettrait d'enregistrer les infos suivantes : 
 - date : time : cpu usage : memory usage

et celà a répétition jusqu'au crash du jeu, ou à l'arrêt du script ?

Grand merci pour votre aide !


----------



## ntx (12 Novembre 2010)

Quand une appli crashe, les info sont dans le log de cash (dans la console). Pas la peine de partir dans des suppositions à la mord moi le noeud.  

Ce qui est écrit dans le résultat du top est parfaitement lisible et compréhensible par un développeur. Tu peux aussi utiliser la commande ps, "man ps" te donnera le mode d'emploi de la commande et les paramètres que tu peux lui passer.

Exemple :

```
ps -p 191 -o %cpu -o %mem
```
où 191 est le pid du process à analyser

Et si la consommation mémoire augmente dans le temps, c'est qu'il y a un memory leak dans le code. Si les développeurs ne le trouvent pas, change de développeur  Rattacher le process au debugeur de Xcode sera bien plus efficace pour investiguer le problème. Tu disposes dans Xcode de tous les outils qu'il faut pour analyser les fuites mémoires.


----------



## Vampyre (12 Novembre 2010)

Tout d'abord un très grand merci à toi pour ton aide. Le problème, et j'ai du mal m'exprimer, c'est que le jeu ne crashe pas. Il freeze, et je dois alors le killer à la main, ce qui ne me laisse pas de log évidemment. Je n'ai eu qu'un seul crash, et j'ai recopié l'intégralité du crashlog chez les dev. Pour le memory leak, c'est justement ce que je voudrais savoir... Je le suppose, mais sans log écrit, pas moyen de le confirmer. Quant au débuggeur xcode, j'ignorais que je pouvais le rattacher à une appli dont je n'ai pas le code source... Mais je vais investiguer cela. Merci à toi !

Edit : J'ai trouvé les outils en question, et j'ai effectivement trouvé un memory leak... Merci à toi !


----------



## ntx (12 Novembre 2010)

Vampyre a dit:


> Quant au débuggeur xcode, j'ignorais que je pouvais le rattacher à une appli dont je n'ai pas le code source... Mais je vais investiguer cela. Merci à toi !


Pour que le code impacté soit lisible, il faut tout de même que l'appli soit compilée avec les instruction de debug. Sinon tu n'auras que de l'hexa, pas très glop à lire.


> Edit : J'ai trouvé les outils en question, et j'ai effectivement trouvé un memory leak... Merci à toi !


----------

