Bon profileur gratuit qui prend en charge MingW32 s’il vous plaît?

Dans un autre fil, j’ai demandé comment profiler mon contenu et les gens m’ont donné beaucoup de bonnes réponses, sauf que lorsque j’ai essayé d’utiliser plusieurs profileurs gratuits, notamment AMD Codeanalyst, ils ne prennent en charge que le format Microsoft PDB, et que MingW est incapable. pour générer ceux-ci.

Alors, quel profileur peut m’aider à profiler une application multithread avec Lua scripting et compilée avec MingW?

EDIT: gprof is crap, l’awnser qui dit pourquoi je ne le veux pas, est sur place … Si j’obtiens toutes les fonctions qu’il paraît gênantes, AUCUN d’entre elles n’est liée au problème que j’ai ( il y a une certaine action qui provoque un ralentissement massif, et je ne peux pas comprendre pourquoi, et gprof ne peut pas le comprendre non plus)

Si vous ne voulez pas utiliser gprof , je ne suis pas surpris .

Il m’a fallu un certain temps pour comprendre comment faire cela sous GDB, mais voici ce que je fais. Lancez l’application et modifiez le focus sur la fenêtre de sortie de l’application, même s’il ne s’agit que d’une boîte DOS. Puis j’appuie sur la touche Control-Break (alors que c’est lent). Ensuite, GDB s’arrête et je fais des fils d’information et il me dit quels fils il y a, généralement 1 et 2. Je bascule vers le fil que je veux, comme le fil 2 . Ensuite, je dois voir une trace de stack. Cela me dit exactement ce que cela faisait quand j’ai appuyé sur Control-Break. Je le fais plusieurs fois, comme 10 ou 20, et s’il y a un problème de performance, peu importe le problème, il apparaît sur plusieurs échantillons de la stack. Plus le programme est lent, moins il faut d’échantillons avant de le voir.

Pour une parsing complète de comment et pourquoi cela fonctionne, voir ce lien.

PS Je gère également SIGINT stop print nopass lorsque je lance GDB.

Est-ce que Gprof ne le fait pas?

Je pensais que MingW fournissait une version de gprof pour aller avec.

Si vous souhaitez profiler les scripts Lua, je pourrais vous suggérer d’utiliser LuaProfiler: http://luaprofiler.luaforfor.net/manual.html . Cela fonctionne assez bien.

Je suggérerais fortement de mettre en place une sorte de minuteur ou votre propre profileur pour obtenir un outil de profilage simple. Une très simple consiste simplement à écrire les moments où certains points de votre code sont touchés, les afficher dans un fichier texte, puis écrire un simple script lua ou python pour parsingr le fichier et filtrer les informations intéressantes.

J’ai utilisé cette version (ou une version légèrement plus complexe) du profilage pour la plupart de mes projets de loisir et cela s’est avéré très utile.