当前位置:网站首页>Valgrind et kcachegrind utilisent l'analyse d'exécution
Valgrind et kcachegrind utilisent l'analyse d'exécution
2022-04-23 08:48:00 【Hideintime】
Un.、valgrindIntroduction
valgrind
C'est en cours d'exécution.Linux
Un ensemble d'outils de débogage et d'analyse de programme basés sur la technologie de simulation,Cadre d'équipement pour la construction d'outils d'analyse dynamique.Il comprend un ensemble d'outils,Chaque outil effectue un certain type de débogage、Analyse ou tâches similaires,Pour aider à affiner vos procédures.Valgrind
L'architecture est modulaire,Il est donc facile de créer de nouveaux outils sans perturber la structure existante.
valgrind
Contient principalement les outils suivants:
1 2 3 4 5 6 7 8 9 10Copy |
|
En plus,Il y a aussi des gadgets que la plupart des utilisateurs n'utilisent pas.: Lackey
Est un exemple d'outil,Pour démontrer le contenu de base de certains équipements;Nulgrind
Est un minimumValgrind
Outils,Ne pas effectuer d'analyse ou d'opération,À des fins d'essai seulement.
2.、valgrindInstallation et utilisation
Installation
RecommandationsvalgrindSite officielTélécharger l'installation, Le dernier paquet disponible sur le site officiel est 3.16.1
1 2 3 4 5 6Copy |
|
Installation après décompression , Vous pouvez spécifier le Répertoire d'installation , Dans ce cas, n'oubliez pas de définir les variables d'environnement
1 2 3 4 5Copy |
|
Voir si l'installation a réussi
1 2Copy |
|
Utilisation des jeux d'outils
Le format de base est le suivant :
1Copy |
|
Il supporte de nombreuses options ,On peut passer parvalgrind --help
Pour voir.
Voici quelques - unes des options les plus couramment utilisées
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26Copy |
|
Trois、 Valgrind Détails de l'outil
1) memcheck
Les outils les plus couramment utilisés,Utilisé pour détecter les problèmes de mémoire dans le programme,Toutes les lectures et écritures à la mémoire sont détectées,Tout va bienmalloc
、free
、new
、delete
Tous les appels sont saisis.Alors...,Il détecte les problèmes suivants:
1 2 3 4 5 6 7 8 9 10 11 12 13 14Copy |
|
Utilisation:
Exécuter après avoir compilé le programme pour générer un exécutable :valgrind –leak-check=full ./Nom du programme
Attention!: Tous les codes de test discutés ci - dessous sont de préférence compilés avec -g
Options(Utilisé dansmemcheck
Générer un numéro de ligne dans la sortie de )Pour compiler.
Validation de la procédure d'essai :
Écrire un programme d'essai
1 2 3 4 5 6 7 8 9 10 11 12Copy |
|
Après compilation,Avecvalgrind
Procédure d'essai.
Si défini--leak-check=full
,Memcheck
On trouvera des détails sur l'endroit où chaque bloc est attribué , Et donne la pile d'appels de fonction au moment de l'allocation (Utilisé lors de la compilation-g
Options et suppression -o
Options d'optimisation, Pour obtenir des informations plus détaillées sur la fonction , Peut être précis à une ligne du Code ).Peut passer--show-leak-kinds
Options pour choisir les types d'erreurs à signaler en détail .Memcheck
La pile d'appels de fonctions contient les mêmes informations de bloc de mémoire ou des informations similaires , Mettez la même entrée pour afficher ,Peut passer--leak-resolution
Pour contrôler ça”Similaire” La force du jugement .
1 2Copy |
|
Les résultats des tests sont les suivants:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24Copy |
|
Description des résultats:
Regardez d'abord dans la sortie HEAP SUMMARY
, Il représente l'état dans lequel le programme alloue la mémoire sur le tas ,Dont:1 allocs
Indique que le programme a été assigné 1
Mémoire secondaire,0 frees
Indique que le programme a été libéré 0
Mémoire secondaire,10 bytes allocated
Ça veut dire que 10
Mémoire en octets.
En plus,Valgrind
Une fuite de mémoire est également signalée à quel endroit le programme a été .
Là - hautLEAK SUMMARY
Imprimera5Différents types,Voici une brève introduction:
1 2 3 4 5 6 7 8Copy |
|
Plusieurs autres situations, Écrivez une procédure d'essai complète pour vérifier .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Copy |
|
Après compilation,Avecvalgrind
Procédure d'essai.
1 2Copy |
|
Résultats des tests
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51Copy |
|
Visiblevalgrind
Toutes les conditions ci - dessus ont été détectées .
2) Callgrind
Etgprof
Outils d'analyse similaires, Mais son observation du fonctionnement du programme est plus nuancée ,Pour plus d'informations.Etgprof
La différence est,Il n'a pas besoin d'ajouter des options spéciales lors de la compilation du code source, Mais il est recommandé d'ajouter des options de débogage .Callgrind
Recueillir des données sur l'exécution du programme,Créer un diagramme d'appel de fonction,Il est également possible de procéder de manière sélectivecache
Simulation.À la fin de l'exécution,Il écrit les données d'analyse dans un fichier.callgrind_annotate
Vous pouvez convertir le contenu de ce fichier en une forme lisible.
Procédure d'essai
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Copy |
|
Après compilation,Avecvalgrind
Procédure d'essai.
1 2 3 4Copy |
|
callgrind.out.3490
C'estcallgrind
Fichiers générés.
Voici un outil graphique d'analyse du rendement Kcachegrind
KcachegrindAdresse du site officiel
Une fois l'installation téléchargée, elle peut être utilisée pour analyser callgrind
Fichiers générés.
AvecKcachegrind
Ouvre.callgrind.out.3490
Ce fichier,Comme le montre la figure ci - dessous::
Par graphisme , Nous pouvons voir intuitivement quel programme est lent à exécuter , Et comprendre les relations d'appel connexes .
3) Cachegrind
Cache
Analyseur,Il simuleCPUDans Niveau 1
Save andCache L2
,Capable d'indiquer avec précision dans le programmecachePerdu et touché
.Si nécessaire,Il peut également nous fournircacheNombre de pertes,Nombre de références de mémoire,Et chaque ligne de code,Par fonction,Chaque module,Nombre d'instructions générées par l'ensemble du programme.C'est très utile pour optimiser le programme.
Il est utilisé de la même façon que :valgrind –tool=cachegrind ./Nom du programme
4) Helgrind
Il est principalement utilisé pour examiner les problèmes de concurrence dans les programmes multithreadés.Helgrind
Rechercher la mémoire accessible par plusieurs Threads,Et il n'y a pas de zone toujours verrouillée,Ces zones sont souvent des endroits où la synchronisation entre les fils est perdue, Et peut causer des erreurs difficiles à détecter .Helgrind
Implémenter le nomEraser
Algorithme de détection de compétition basé sur,Et d'autres améliorations ont été apportées,Réduction du nombre de rapports d'erreurs.Mais,Helgrind
Toujours à l'état expérimental .
Code d'essai:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26Copy |
|
Après compilation,Avecvalgrind
Procédure d'essai.
1 2Copy |
|
Résultats des tests:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65Copy |
|
D'après les résultats ci - dessus ,valgrind
L'état de la course est analysé .
5) Massif
Analyseur de pile,Il mesure la quantité de mémoire utilisée par le programme dans la pile,Dis - nous de faire des piles.,Taille du bloc de gestion du tas et de la pile.Massif
Peut nous aider à réduire l'utilisation de la mémoire,Dans un système moderne avec mémoire virtuelle,Il peut également accélérer le fonctionnement de nos programmes,Réduire la probabilité que le programme reste dans la zone d'échange.
Massif
Pour l'allocation et la libération de mémoire profile
. Les développeurs de programmes peuvent en savoir plus sur le comportement d'utilisation de la mémoire d'un programme , Pour optimiser l'utilisation de la mémoire . Cette fonction correspond à C++
Particulièrement utile,Parce queC++
Il y a beaucoup d'allocations et de sorties de mémoire cachées .
En outre,lackey
Et nulgrind
Sera également disponible.Lackey
C'est un petit outil.,Rarement utilisé;Nulgrind
Montrer aux développeurs comment créer un outil.Il n'y aura pas d'introduction ici.
版权声明
本文为[Hideintime]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230847222408.html
边栏推荐
- Failed to prepare device for development
- Excle plus watermark
- 根据字节码获取类的绝对路径
- 爬虫使用xpath解析时返回为空,获取不到相应的元素的原因和解决办法
- PgSQL wants to implement all kinds of column sub query operations of MySQL
- 关于堆的判断 (25 分) 两种插入方式
- 00后最关注的职业:公务员排第二,第一是?
- 【原创】使用System.Text.Json对Json字符串进行格式化
- PLC point table (register address and point table definition) cracking detection scheme -- convenient for industrial Internet data acquisition
- 2022-04-22 openebs cloud native storage
猜你喜欢
Please arrange star trek in advance to break through the new playing method of chain tour, and the market heat continues to rise
1099 establish binary search tree (30 points)
L2-022 重排链表 (25 分)(map+结构体模拟)
洋桃电子STM32物联网入门30步笔记四、工程编译和下载
Introduction to GUI programming swing
Use of Arthas in JVM tools
Yangtao electronic STM32 Internet of things introduction 30 steps notes 1. The difference between Hal library and standard library
Latex paper typesetting operation
Automatic differentiation and higher order derivative in deep learning framework
2022-04-22 OpenEBS云原生存储
随机推荐
洋桃电子STM32物联网入门30步笔记三、CubeMX图形化编程、设置开发板上的IO口
Noyer électronique stm32 Introduction à l'Internet des objets 30 étapes notes I. différences entre la Bibliothèque Hal et la Bibliothèque standard
rembg 分割mask
【精品】利用动态代理实现事务统一管理 二
DJ音乐管理软件Pioneer DJ rekordbox
Whether the same binary search tree (25 points)
Go语言自学系列 | golang方法
Go语言自学系列 | golang结构体的初始化
Redis Desktop Manager for Mac(Redis可视化工具)
LaTeX论文排版操作
爬虫使用xpath解析时返回为空,获取不到相应的元素的原因和解决办法
JSP page coding
PLC的点表(寄存器地址和点表定义)破解探测方案--方便工业互联网数据采集
Use include in databinding
Summary of solid problems
bashdb下载安装
Talent Plan 学习营初体验:交流+坚持 开源协作课程学习的不二路径
okcc呼叫中心外呼系统智能系统需要用多大的盘存录音?
Word plus watermark
OneFlow學習筆記:從Functor到OpExprInterpreter