Writing /net/www/auesnard/teaching/data/meta/projtec/gdb.meta failed
projtec:gdb
Writing /net/www/auesnard/teaching/data/cache/b/b917139305956507b1746900fb337322.xhtml failed
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projtec:gdb [2017/11/14 11:05] – orel | projtec:gdb [2024/03/18 15:06] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
* GDB : https:// | * GDB : https:// | ||
* Valgrind : http:// | * Valgrind : http:// | ||
- | * KCacheGrind | + | * KCacheGrind |
+ | * cppcheck (analyse statique de code, linter) : http:// | ||
* GCov | * GCov | ||
- | Voici 4 cas de figures très classiques : | ||
- | |||
- | * Votre programme plante à chaque exécution ? Réflexe : relancer le programme avec gdb et/ou valgrind. | ||
- | * Votre programme boucle à l' | ||
- | * Votre programme plante de temps en temps ? Réflexe : autoriser préalablement la génération des fichiers //core// (ulimit -c 100000) et lorsque le programme plante, lancer gdb sur le fichier //core// généré. | ||
- | * Votre programme boucle de temps en temps ? Réflexe : lancer gdb et attacher gdb au processus de votre programme. | ||
==== Valgrind ==== | ==== Valgrind ==== | ||
Line 17: | Line 12: | ||
Pour détecter les problèmes d' | Pour détecter les problèmes d' | ||
- | gcc -Wall -g -O0 monprog.c -o monprog | + | |
- | valgrind --leak-check=yes ./monprog | + | |
| | ||
- | //A compléter...// | ||
+ | ==== Analyse statique de code avec cppcheck ==== | ||
+ | |||
+ | $ cppcheck --enable=all --xml -I ../include *.c 2> report.xml | ||
+ | $ cppcheck-htmlreport --source-dir=. --report-dir=report --file=report.xml | ||
+ | |||
+ | => Open ' | ||
+ | |||
+ | Ici un exemple d' | ||
+ | |||
+ | ==== Utilisation de kcachegrind ==== | ||
+ | |||
+ | $ valgrind --tool=callgrind program | ||
+ | |||
+ | => callgrind.out.< | ||
+ | |||
+ | $ kcahegrind callgrind.out.< | ||
==== Compilation & Exécution avec GDB ==== | ==== Compilation & Exécution avec GDB ==== | ||
+ | |||
+ | Voici 4 cas de figures très classiques : | ||
+ | |||
+ | * Votre programme plante à chaque exécution ? Réflexe : relancer le programme avec gdb et/ou valgrind. | ||
+ | * Votre programme boucle à l' | ||
+ | * Votre programme plante de temps en temps ? Réflexe : autoriser préalablement la génération des fichiers //core// (ulimit -c 100000) et lorsque le programme plante, lancer gdb sur le fichier //core// généré. | ||
+ | * Votre programme boucle de temps en temps ? Réflexe : lancer gdb et attacher gdb au processus de votre programme. | ||
+ | |||
Il est nécessaire au préalable de compiler son code C avec les CFLAGS " | Il est nécessaire au préalable de compiler son code C avec les CFLAGS " | ||
Line 34: | Line 52: | ||
* quit (q) : quitter gdb | * quit (q) : quitter gdb | ||
- | * run , kill (r,k) : lancer l’execution, | + | * run [< |
- | * break < | + | * break < |
- | * watch <var> (w), rwatch < | + | * clear, delete |
+ | * watch <var> (w), rwatch < | ||
* step, next, continue, finish (s,n,c) : avancer d’un pas (en entrant ou pas dans les sous-fonctions), | * step, next, continue, finish (s,n,c) : avancer d’un pas (en entrant ou pas dans les sous-fonctions), | ||
* print <var> (p) : afficher la valeur d’une variable | * print <var> (p) : afficher la valeur d’une variable | ||
+ | * print *array@len : pour afficher //len// valeurs à partir de l' | ||
* list : afficher 10 lignes de code autour de l' | * list : afficher 10 lignes de code autour de l' | ||
* backtrace / frame <num> : afficher la pile d’execution, | * backtrace / frame <num> : afficher la pile d’execution, | ||
- | * display <var> / undisplay < | + | * display <var> / undisplay < |
- | * x < | + | * x /xw < |
+ | * call foo(1), call strlen(" | ||
+ | * set var x = 1 : modification de la variable x | ||
+ | * shell <cmd> : exécute une commande shell | ||
+ | * file < | ||
(gdb) list | (gdb) list | ||
Line 76: | Line 100: | ||
(gdb) attach 12271 | (gdb) attach 12271 | ||
| | ||
+ | ==== Autres Trucs ==== | ||
+ | |||
+ | * Ctrl-X Ctrl-A : ouvre une petite fenêtre avec le code source paginée, qui suit l' | ||
+ | * Refcard : http:// | ||
+ | |||
+ |
projtec/gdb.1510657527.txt.gz · Last modified: 2024/03/18 15:05 (external edit)