当前位置:网站首页>Utilisation de GDB
Utilisation de GDB
2022-04-23 13:39:00 【Stack overflow? Tan90】
GDBUtilisation de
FréquentgdbCommandes de débogage et utilisation
| Nom de la commande | Abréviation de commande | Description de la commande |
|---|---|---|
| run | r | Exécuter un programme |
| continue | c | Laissez le programme en pause continuer |
| break | b | Ajouter un point d'arrêt |
| tbreak | tb | Ajouter un point d'arrêt temporaire |
| backtrace | bt | Voir la pile d'appels pour le thread courant |
| frame | f | Passer à la pile spécifiée par le thread d'appel actuel |
| info | info | Voir le point d'arrêt、Filetage et autres informations |
| enable | enable | Activer un point d'arrêt |
| disable | disable | Désactiver un point d'arrêt |
| delete | del | Supprimer le point d'arrêt |
| list | l | Afficher le Code |
| p | Afficher les valeurs des variables,Par exemple::p + Nom de la variable,Représente la valeur de la variable d'affichage.Vous pouvez aussi ajouter une fonction:p + Fonctions,On peut aussi ajouter des expressions | |
| ptype | ptype | Afficher les types de variables |
| thread | thread | Passer au thread spécifié |
| next | n | Passer à la ligne suivante |
| step | s | Exécuter l'instruction de ligne courante,Si l'instruction est un appel de fonction,Entrez la fonction pour exécuter la première instruction Attention!:Si la fonction est une fonction de bibliothèque ou une fonction fournie par un tiers,AvecsJe ne peux pas entrer.,Parce qu'il n'y a pas de code source,Si c'est une fonction personnalisée,Tant qu'il y a un code source, vous pouvez entrer |
| until | u | Exécuter sur la ligne spécifiée,Arrête |
| finish | fi | Fin de la fonction d'appel courante,Au niveau supérieur de l'utilité de l'ajustement de fonction |
| return | return | Termine la fonction d'appel courante et renvoie la valeur spécifiée ,Au niveau supérieur de l'utilité de l'ajustement de fonction |
| jump | j | Sauter le flux d'exécution du programme actuel à la ligne ou à l'adresse spécifiée |
| disassemble | dis | Voir le Code d'assemblage |
| set args | Définir les paramètres du programme principal Méthode de réglage: (gdb)set args +Paramètres1 + Paramètres2 |
|
| set var | Définir la valeur de la variable, Supposons que le programme ait deux variables :Par exemple:int i;char arr[20]; set var i = 10; Prends ça.iLa valeur de est définie à10; set var arr = “string”; Prends ça.arrLa valeur de est définie à”string“,Attention, non.strcpy |
|
| show args | Afficher les paramètres de la ligne de commande pour les paramètres | |
| watch | watch | Surveille si la valeur d'une variable ou d'une adresse mémoire a changé |
| display | display | Variables surveillées ou adresses mémoire , Sortie automatique des variables surveillées ou des adresses mémoire après une interruption de programme |
| dir | dir | Rediriger l'emplacement du fichier source |
Attention!
Il est nécessaire d'ajouter -gOptions, Il est également recommandé de désactiver les options d'optimisation pour le programme compilateur , L'optimisation du programme compilateur est généralement 5Niveaux,C'est - à - dire:O0-O4,Parmi euxO0Indique qu'il n'est pas optimisé,DeO1-O4, Niveau d'optimisation de plus en plus élevé .RecommandéO0.
DémarragegdbMéthode de mise en service
Utilisergdb Il y a généralement trois façons de déboguer un programme :
-
Débogage direct du programme cible : gdb + filename
-
attachAu processus:gdb + attach + pid
- Quand un programme a été lancé , Mais aussi pour déboguer le programme ,Alors il fautgdb attch + Processus à déboguer id.En serviceattach Après le processus cible , Le débogueur s'arrêtera ,Pour le moment, utilisez directementcontinue La commande permet au programme de continuer .
- Si vous voulez terminer le débogage après avoir terminé le programme , Sans aucun effet sur le processus actuel ,Ça pourrait être dansgdb Entrée de l'interface de commande pour detach Le programme de commande est séparé du débogueur .
-
Mise en servicecoreDocumentation– Problème de fuite du processus de localisation :gdb + filename corename
-
linux Par défaut, le système n'ouvre pas le programme lorsqu'il s'écrase core Cette fonction de fichier ,Peut être utiliséulimit -c Pour voir si le système active cette fonction .Si vous découvrezcore file size- Oui.0Et si, Indique que la construction est fermée coreOptions pour les fichiers,Peut passerulimit + Nom de l'option + SetPoint Pour modifier. Peut être changée en taille maximale admissible ,Par exemple:1024, Indique le maximum généré coreLa taille du fichier est1024KB; Peut également être changé en infini ,Par exemple:ulimit -c unlimited
-
Attention!: Après avoir fermé la session , Cette valeur deviendra 0. Si vous voulez que cette option prenne effet de façon permanente ,Il y a deux façons de régler:
-
In/etc/security/limits.confAjouter une ligne:
#<domain> <type> <item> <value> * soft core unlimited -
Prends ça.ulimit -c unlimitedAjouter à/etc/profileDans le document, Mettez - le sur la dernière ligne . Exécution après modification réussie
source /etc/profileLa configuration peut prendre effet immédiatement . Bien sûr que ça ne fonctionne que pour rootUtilisateurs, Si vous voulez agir uniquement sur un utilisateur ,Tu peux mettreulimit -c unlimited Ajouter à l'utilisateur correspondant ~/.bashrcOu ~/.bash_profileDans le document -
Produitcore Le nom par défaut du fichier est core.pid. L'emplacement est dans le répertoire où se trouve le programme crash .
-
-
Si, Quand plusieurs programmes s'écrasent en même temps ,Impossible de partir decore Le nom du fichier correspond à quel service ,Comment le résoudre??
-
Mode 1: Au début du programme est enregistré pid
-
Mode 2:Personnalisationcore Nom et Répertoire du fichier
-
/proc/sys/kernel/core_uses_pid Peut être contrôlé dans la production de core Ajouter ou non au nom du fichier pidComme extension,Si ajouté, le contenu du fichier est1,Sinon0
-
/proc/sys/kernel/core_patternPeut être formatécoreFichier enregistrer l'emplacement ou le nom du fichier.Modifier comme suit::
echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_patternNom du paramètre Signification des paramètres %p AjouterpidÀcoreDans le nom du fichier %u Ajouter le courantuidÀcoreDans le nom du fichier %g Ajouter le courantgidÀcoreDans le nom du fichier %s Ajouter conduit àcore Le signal de coreDans le document %t AjoutercoreTemps de génération du fichier(UNIX)ÀcoreDans le document %h Ajouter un nom d'hôte à coreDans le nom du fichier %e Ajouter un nom de programme à coreDans le nom du fichier
-
-
-
gdb Débogage d'une méthode multithreadée
-
Utilisergdb Après avoir lancé le programme ,Utiliserctrl + c Interrompre le programme ,Utiliserinfo threads Commande pour voir combien de Threads le processus actuel a .
-
Peut être utiliséthread + Le numéro de fil passe au fil correspondant ,UtiliserbtAfficher la pile d'appels pour le thread
-
Parfois, dans des situations multithreadées , Je veux juste déboguer un thread , Au lieu de passer à un autre thread , Vous pouvez utiliser l'option de verrouiller le thread de débogage actuel
scheduler-lockingCette option a trois valeurs ,Respectivement.on(Verrouillé.)、step(Verrouillé.)、off(Relâchez la serrure.).Utiliser comme suit:set scheduler-locking on/step/off- onEtstepLa différence:Set toonHeure,Exécution actuelle du threadnext、step、until、finish、returnAu moment de l'ordre, Aucun autre thread n'exécutera .EtstepSi et seulement sinext、step La commande Verrouille le fil courant ,Utiliseruntil、finish、return Attendez les commandes de débogage dans le thread ( Commande de débogage non en une seule étape ), D'autres Threads ont une chance de fonctionner .
gdb Débogage d'une méthode Multi - processus
-
Méthode 1:MaintenantshellUtilisé dans la fenêtregdbDébogage du processus parent, Quand le processus enfant est forkEn sortant, En rouvrant un shellUtilisation des fenêtresgdbattach Les commandes serontgdb attach Au sous - processus .
-
Mode 2:gdb Le débogueur offre follow-forkOptions,Adoptionset follow-fork mode Mettre en place un processus fork Un nouveau sous - processus fait ,gdb Continuer à déboguer le processus parent ou le processus Enfant .
1. Débogage du processus parent:set follow-fork-mode parent(Par défaut) 2. Débogage des sous - processus:set follow-fork-mode child 3. Définir le mode de débogage:set detach-on-fork [on|off] 1. Par défauton; Indique quand déboguer le processus actuel , Les autres processus continuent 2. off: Lors du débogage du processus actuel , D'autres processus sont gdbEn attente 4. Voir le processus de débogage:info inferiors 5. Basculer le processus de débogage actuel :inferior + ProcessusID 6. Attention!: Pour changer le débogage du processus, vous devez définir le mode de débogage à off
Références《c++Essence du développement du serveur》
Si cet article vous aide,Souviens - toi d'un bouton trois fois,Un bouton et trois rires,Capacité de codage supérieure!
Mes capacités sont limitées,En cas d'erreur,J'espère que vous me corrigerez;L'originalité n'est pas facile,Bienvenue à la réimpression,Veuillez indiquer la source de la réimpression.!
版权声明
本文为[Stack overflow? Tan90]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231333555171.html
边栏推荐
- Filter and listener of three web components
- [multi screen interaction] realize dual multi screen display II: startactivity mode
- 超40W奖金池等你来战!第二届“长沙银行杯”腾讯云启创新大赛火热来袭!
- Migrating your native/mobile application to Unified Plan/WebRTC 1.0 API
- [barycentric coordinate interpolation, perspective correction interpolation] principle and usage opinions
- Common interview questions and detailed analysis of the latest Android developers in 2020
- Cross carbon market and Web3 to achieve renewable transformation
- Using open to open a file in JNI returns a - 1 problem
- 9419页最新一线互联网Android面试题解析大全
- The interviewer dug a hole for me: what's the use of "/ /" in URI?
猜你喜欢

Solve the problem of Oracle Chinese garbled code

TIA博途中基于高速计数器触发中断OB40实现定点加工动作的具体方法示例

【官宣】长沙软件人才实训基地成立!

MySQL 8.0.11 download, install and connect tutorials using visualization tools

The interviewer dug a hole for me: what's the use of "/ /" in URI?

CSDN高校俱乐部“名师高校行”——湖南师范大学站
![[barycentric coordinate interpolation, perspective correction interpolation] principle and usage opinions](/img/db/2e7d7f519f97f0c4179a29af8942a6.png)
[barycentric coordinate interpolation, perspective correction interpolation] principle and usage opinions
![[official announcement] Changsha software talent training base was established!](/img/ee/0c2775efc4578a008c872022a95559.png)
[official announcement] Changsha software talent training base was established!

SPI NAND flash summary

面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ?
随机推荐
[dynamic programming] 221 Largest Square
Example of specific method for TIA to trigger interrupt ob40 based on high-speed counter to realize fixed-point machining action
FatFs FAT32 learning notes
Super 40W bonus pool waiting for you to fight! The second "Changsha bank Cup" Tencent yunqi innovation competition is hot!
LeetCode_ DFS_ Medium_ 695. Maximum area of the island
Analysis of the latest Android high frequency interview questions in 2020 (BAT TMD JD Xiaomi)
torch. Where can transfer gradient
Vscode tips
SAP ui5 application development tutorial 72 - animation effect setting of SAP ui5 page routing
playwright控制本地穀歌瀏覽打開,並下載文件
[point cloud series] multi view neural human rendering (NHR)
PyTorch 21. NN in pytorch Embedding module
叮~ 你的奖学金已到账!C认证企业奖学金名单出炉
Android clear app cache
顶级元宇宙游戏Plato Farm,近期动作不断利好频频
100000 college students have become ape powder. What are you waiting for?
UEFI learning 01-arm aarch64 compilation, armplatformpripeicore (SEC)
【快排】215. 数组中的第K个最大元素
How do ordinary college students get offers from big factories? Ao Bing teaches you one move to win!
[point cloud series] summary of papers related to implicit expression of point cloud