Déboguer un crash de processus (par GDB etc.)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sources - outils utiles Outils d'analyse de code source (décortiquer une arborescence de fichiers source)
|
Commandes gdb |
Raccourci |
Infos |
help |
||
help lacommande |
||
attach lepid |
S'attache à un processus actif, dont le pid peut être trouvé par : ps aux. | |
Gestion des interruptions |
||
handle all nostop |
||
handle all pass |
||
handle 11 stop |
||
Infos |
||
info |
||
info sources |
Indique où sont les sources, etc. |
|
info proc | Infos sur le programme. | |
info functions |
Infos sur les fonctions du programme. | |
quit |
q |
Sortir. |
kill |
Tuer le process. |
|
list | |
GDB affiche 10 lignes, ou les 10 suivantes. |
list 3,8 |
GDB affiche les lignes 3 à 8. |
|
list main |
||
Backtrace |
||
backtrace |
bt |
GDB affiche l'empilage des fonctions appelées (call
stack, stack trace) ainsi que des infos sur chaque stack frame |
where |
De même. |
|
backtrace full |
bt full |
De même, mais affiche également le contenu des variables. |
backtrace 4 |
bt 4 full |
|
set backtrace limit 8 |
Limite à 8 le nombre de frames affichées. |
|
frame 4 | Sélectionne la frame 4 et affiche ses infos. |
|
info frame |
||
info args |
GDB affiche les arguments passés à la fonction. |
|
info locals |
GDB affiche les variables locales et leur contenu. |
|
Threads |
||
info thread |
Affiche les infos concernant les threads. |
|
where all where lethread |
||
thread lethread |
Ce thread deviendra le thread courant. |
|
thread apply all where thread apply 7 where thread apply lethread lacommande |
Pour voir ce que font tous les threads. Pour voir ce que fait le thread n°7. |
|
Navigation |
||
start |
GDB s'arrêtera à la première ligne du main. |
|
step |
s |
GDB exécute une ligne de code. |
next |
n |
De même, mais si la ligne appelle une fonction, exécute la fonction. |
finish |
GDB exécute toute la fonction en cours et affiche la valeur retournée (execute until selected stack frame returns). |
|
run | GDB s'arrêtera au prochain breakpoint. | |
continue |
c |
GDB continuera jusqu'au prochain breakpoint/watchpoint. |
Breakpoints |
||
info breakpoints |
info break | Liste les breakpoints et leur n°. |
break main |
GDB positionne un breakpoint sur main. |
|
break lafonction | GDB positionne un breakpoint à l'entrée de la fonction. | |
break |
b 15 b vlc.c 2400 |
GDB positionne un breakpoint à la ligne 15. Autre exemple : b 15 if i==4 |
condition |
A utiliser si le breakpoint est déjà défini. Exemple, condition sur le breakpoint n°1 : condition 1 i==4 |
|
rbreak |
Breakpoint défini à partir d'une expression régulière. |
|
delete 3 |
GDB enlève le breakpoint n°3. |
|
commands 2 |
Permet de faire exécuter des commandes lorsqu'on atteint le breakpoint n°2. |
|
asm("int $0x3\n"); |
Insertion d'un "breakpoint exception" dans le code source (architectures 64 et IA-32, systèmes x86). |
|
Variables |
||
print lavariable print *lepointeur print /x lavariable |
p i p env p *env |
GDB affiche le contenu de la variable, d'une expression C, ou affiche sur quoi pointe le pointeur. |
display lavariable display *lepointeur |
De même, mais affichera les modifs au fur et à mesure. |
|
Watchpoints |
Breakpoints associés à une variable. |
|
info watchpoints |
info watch | |
watch lavariable | GDB s'arrêtera quand le contenu de cette variable sera modifié. | |
watch i if i==-1 |
GDB s'arrêtera quand le contenu de i sera égal à -1. |
|
rwatch |
GDB s'arrêtera quand la variable sera lue. | |
GDB avancé |
||
x |
Examiner la mémoire (voir : help x). |
|
info proc mappings |
Affiche le mapping mémoire, etc. |
|
disass main | Désassemble les lignes de main. |
|
Remote |
||
maintenance |
Voir : help maintenance. |
Ajout dans les sources d'appels à la fonction printf, avec l'option -v ou avec des ifdef.
Vic Page modifiée le 7 octobre 2013 Page d'accueil du site |
|