2017-05-11 1 views
2

J'essaie d'améliorer mes propres imprimantes GDB en utilisant l'API GDB python.Profil GDB python jolies imprimantes pour Qt5

Actuellement je les teste avec un noyau. J'essaie d'obtenir de l'information pour du QMap, du contenu QList, mais ils ont tellement d'éléments que leur impression avec son contenu est vraiment lente (minutes). Donc, je voudrais savoir s'il existe un moyen connu de profiler quelles parties sont plus lentes.

J'ai déjà vérifié Python profile manual et google-perftools, mais je ne sais pas comment les utiliser dans le cycle d'exécution GDB.

gdbcommands.txt:

source /home/user/codigo/git/kde-dev-scripts/gdb/load-qt5printers.py 
source /home/user/codigo/myownprinters.py 
core ../../core.QThread.1493215378 
bt 
p longQMapofQList 

Lien vers load-qt5-printers.py content:

Je lance gdb pour exécuter automatiquement les commandes:

gdb-multiarch --command=~/bin/gdbcommands.txt 

Répondre

1

ils ont autant d'éléments qui les imprimer avec son contenu est vraiment lent (minutes).

Les jolies imprimantes Qt respectent-elles la limite print-elements? Votre limite est-elle trop élevée? Il est peu probable que le profilage soit utile ici: si vous imprimez une liste avec (disons) 1000 éléments, il est probable que GDB devra exécuter 10 000 appels ptrace ou plus, et ~ passer tout le temps à attendre ces appels.

Vous pouvez exécuter gdb sous strace -c et d'observer combien de ptrace sont exécutés lors de l'impression d'une liste de 10 éléments et de 100 éléments. Si l'augmentation est linéaire, vous pouvez essayer d'optimiser la jolie imprimante pour faire moins d'accès. Si l'augmentation est quadratique, la jolie imprimante peut faire des chasses inutiles de pointeur (et cela expliquerait certainement pourquoi l'impression de longues listes prend des minutes).

+0

J'ai désactivé les limites d'impression, car je voudrais les imprimer toutes. C'est pourquoi je demande de l'aide pour profiler des pièces plus lentes. Et c'est un fichier core, autant que je sache, ptrace n'est pas utilisé ici. Merci pour votre réponse. – kikeenrique

+0

@kikeenrique En supposant que vous utilisiez de jolies imprimantes QT à partir de https://cgit.kde.org/kde-dev-scripts.git/tree/gdb, je peux imprimer QList avec 1000 éléments d'un vidage de base en 0.13s. Quelle est la taille de vos listes? –