profiler, mem checker

Le
Torri
je programme sous Windows avec msys / mingw (C, C++), pas visual studio
(je suis en fait un linuxien) et je voudrais savoir s'il existe des
outils tels que

1) valgrind (principalement mem checker, mais fait beaucoup plus)
2) oprofile (profiler de l'exécution de code)
3) memsys (profiler de mémoire)

qui existent sous linux.

Pour 1), il existe en gratuit mpatrol, qui est très bon. Mais le problème
est qu'il est invasif : il faut modifier le code pour pouvoir l'utiliser.
J'aurais aimé avoir quelque chose comme valgrind, où il n'est pas besoin
d'avoir à recompiler le code.

Pour 2) l'outil de GNU gprof existe, mais il ne donne pas de bon
résultats. Je veux profiler du code "générique", pas du code d3d, où
d'autres outils existent et sont très bons, d'ailleurs.

Pour 3), je n'en connais aucun.

Et puisque je parle de mem checker, s'il est possible d'en avoir un comme
valgrind, quel serait la technique pour le programmer (valgrind utilise
une technique basée sur une propriété de dlfcn, qui peut charger une
shared lib avant celle du système, ce qui fait qu'il peut faire une sorte
de surcharge des fonctions de la libc, et remplacer les malloc / free (et
équivalents en c++) par ses propres appels) ?

merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jerome
Le #9775621
Torri wrote:
je programme sous Windows avec msys / mingw (C, C++), pas visual studio
(je suis en fait un linuxien) et je voudrais savoir s'il existe des
outils tels que

1) valgrind (principalement mem checker, mais fait beaucoup plus)
2) oprofile (profiler de l'exécution de code)
3) memsys (profiler de mémoire)



Le plus connu est DevPartner (BoundsChecker)
(et ANTS Profiler pour .NET)
Mais un Code Profiler est inclus avec VS, selon les versions
Alain
Le #9781761
> je programme sous Windows avec msys / mingw (C, C++), pas visual studio
(je suis en fait un linuxien) et je voudrais savoir s'il existe des
outils tels que

1) valgrind (principalement mem checker, mais fait beaucoup plus)
2) oprofile (profiler de l'exécution de code)
3) memsys (profiler de mémoire)

qui existent sous linux.

Pour 1), il existe en gratuit mpatrol, qui est très bon. Mais le problème
est qu'il est invasif : il faut modifier le code pour pouvoir l'utiliser.
J'aurais aimé avoir quelque chose comme valgrind, où il n'est pas besoin
d'avoir à recompiler le code.

Pour 2) l'outil de GNU gprof existe, mais il ne donne pas de bon
résultats. Je veux profiler du code "générique", pas du code d3d, où
d'autres outils existent et sont très bons, d'ailleurs.

Pour 3), je n'en connais aucun.

Et puisque je parle de mem checker, s'il est possible d'en avoir un comme
valgrind, quel serait la technique pour le programmer (valgrind utilise
une technique basée sur une propriété de dlfcn, qui peut charger une
shared lib avant celle du système, ce qui fait qu'il peut faire une sorte
de surcharge des fonctions de la libc, et remplacer les malloc / free (et
équivalents en c++) par ses propres appels) ?



AQTime http://automatedqa.com/products/aqtime/
+ d'autres qui sont cités comme Vtune :
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost2369
Torri
Le #9784851
Le Fri, 27 Jun 2008 22:33:57 +0200, Jerome a écrit :

Torri wrote:
je programme sous Windows avec msys / mingw (C, C++), pas visual studio
(je suis en fait un linuxien) et je voudrais savoir s'il existe des
outils tels que

1) valgrind (principalement mem checker, mais fait beaucoup plus) 2)
oprofile (profiler de l'exécution de code) 3) memsys (profiler de
mémoire)



Le plus connu est DevPartner (BoundsChecker) (et ANTS Profiler pour
.NET)
Mais un Code Profiler est inclus avec VS, selon les versions



apparemment, BoundsChecker ne fonctionne qu'avec visual studio, que je
n'utilise pas. Et il me semble qu'il n'existe qu'en version de demo. Il
n'est pas open source
Torri
Le #9787761
Le Fri, 27 Jun 2008 23:14:18 +0200, Alain a écrit :

AQTime http://automatedqa.com/products/aqtime/



dommage qu'il ne soit pas libre... Il fonctionne avec gcc. Je vais voir
la version demo.

+ d'autres qui sont
cités comme Vtune :
http://discuss.fogcreek.com/joelonsoftware/default.asp?


cmd=show&ixPost2369


je connais vtunes et l'outil d'amd. Il existe aussi purify. Mais
fonctionne-t-ils avec gcc ?
Jerome
Le #10449651
Torri wrote:

apparemment, BoundsChecker ne fonctionne qu'avec visual studio, que je
n'utilise pas. Et il me semble qu'il n'existe qu'en version de demo. Il
n'est pas open source




Oui, mais maintenant Visual Studio (Express 2008 pour la v. free) est
loin devant et on ne peut pas s'en passer en dév Windows.
C'est la norme dans à peu près toutes les DSI de banque/finance,
industrie, etc..
Vincent Burel
Le #10851681
"Torri" news:48655cfa$0$22720$
Le Fri, 27 Jun 2008 22:33:57 +0200, Jerome a écrit :

> Torri wrote:
>> je programme sous Windows avec msys / mingw (C, C++), pas visual studio
>> (je suis en fait un linuxien) et je voudrais savoir s'il existe des
>> outils tels que
>>
>> 1) valgrind (principalement mem checker, mais fait beaucoup plus) 2)
>> oprofile (profiler de l'exécution de code) 3) memsys (profiler de
>> mémoire)
>
> Le plus connu est DevPartner (BoundsChecker) (et ANTS Profiler pour
> .NET)
> Mais un Code Profiler est inclus avec VS, selon les versions

apparemment, BoundsChecker ne fonctionne qu'avec visual studio, que je
n'utilise pas. Et il me semble qu'il n'existe qu'en version de demo. Il
n'est pas open source



Vous pouvez aussi mettre en place vos propres stratégies de checking.
BoundChecker est bien mais il fait des test génériques (essentiellement
mémoire et appel system) et puis c'est cher... Quand on fait des logiciels
complexes, de taille importante, il est plus efficace et plus sécure
d'intégrer (éventuellement dans des section #ifdef _DEBUG ) ses propre
tests.

On peut même se fabriquer une petite unité de gestion de LOG avec une
fenetre de monitoring, et intégrer des test d'erreur spécifiques dans les
procédures les plus critiques (ConsistencyTest). J'aime bien le LOG pour
checker le déroulement du soft , que le scenario est bien respecté, que
toutes les choses se font dans le bon ordre.

Bref, avec ou sans BoundChecker, c'est un bon réflexe d'intégrer des
procédures de test dans son code... ca prend plus de temps , mais au final
ca en fait gagner énormément, et ca libère l'esprit :-)

VB
Torri
Le #10854631
Le Sun, 29 Jun 2008 09:52:53 +0200, Vincent Burel a écrit :

Vous pouvez aussi mettre en place vos propres stratégies de checking.
BoundChecker est bien mais il fait des test génériques (essentiellement
mémoire et appel system) et puis c'est cher... Quand on fait des
logiciels complexes, de taille importante, il est plus efficace et plus
sécure d'intégrer (éventuellement dans des section #ifdef _DEBUG ) ses
propre tests.

On peut même se fabriquer une petite unité de gestion de LOG avec une
fenetre de monitoring, et intégrer des test d'erreur spécifiques dans
les procédures les plus critiques (ConsistencyTest). J'aime bien le LOG
pour checker le déroulement du soft , que le scenario est bien respecté,
que toutes les choses se font dans le bon ordre.

Bref, avec ou sans BoundChecker, c'est un bon réflexe d'intégrer des
procédures de test dans son code... ca prend plus de temps , mais au
final ca en fait gagner énormément, et ca libère l'esprit :-)



Certes, j'ai déjà ce genre de système pour les erreurs, de même que des
unit tests, mais je ne pense pas qu'il puisse me donner les fuites de
mémoires, l'état de la mémoire au cours du temps, le fait que je déborde
d'une adresse allouée, etc.. Avec les logs, je peux, par contre, avoir
les temps passés dans chaque routine, bien sur.

Justement, ce qui m'intéresse, c'est le genre d'outils qui ne peuvent pas
être émulés avec juste des logs ou des unit tests.

je cherche depuis pas mal de temps, et j'ai l'impression que les outils
disponibles sous linux et si pratiques (i.e. qui peuvent fournir ce genre
de renseignements sans modification de code) n'existent pas.

j'ai trouvé une liste d'outils sur wikipedia:

http://en.wikipedia.org/wiki/Memory_debugger
http://en.wikipedia.org/wiki/List_of_performance_analysis_tools

parmi tous ceux listés, aucun ne tourne sous windows avec les avantages
que procurent les outils sous linux. Zut zut zut.
Vincent Burel
Le #10862011
"Torri" news:4867ae99$0$8144$
Le Sun, 29 Jun 2008 09:52:53 +0200, Vincent Burel a écrit :

> Bref, avec ou sans BoundChecker, c'est un bon réflexe d'intégrer des
> procédures de test dans son code... ca prend plus de temps , mais au
> final ca en fait gagner énormément, et ca libère l'esprit :-)

Certes, j'ai déjà ce genre de système pour les erreurs, de même que des
unit tests, mais je ne pense pas qu'il puisse me donner les fuites de
mémoires, l'état de la mémoire au cours du temps, le fait que je déborde
d'une adresse allouée, etc..



ben si ! il suffit de surcharger toutes ces taches. Par exemple vous
surcharger le malloc en incluant par exemple un compteur de reférence. Si
vous voulez une analyse plus précise, vous gérez une historic des pointeurs
/ taille alloués.

> Justement, ce qui m'intéresse, c'est le genre d'outils qui ne peuvent pas
être émulés avec juste des logs ou des unit tests.



Que croyez vous que font les autres ? :-)

VB
Publicité
Poster une réponse
Anonyme