Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1756 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Linux / Debug avec DDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Linux / Debug avec DDD

n°1356391
jipo
Kamoulox !
Posté le 29-04-2006 à 10:09:19  profilanswer
 

Slt,
 
J'utilise DDD pour debuguer sous Linux Fedora Core 4 ...
J'ai quelques questions :
1/ Les touches de fonction F5, F6, etc ... n'ont aucun effet : je suis obligé d'utiliser avec la souris le petit panneau avec ces memes fonctions. Comment faire pour que les fonctions soient actives ?
 
2/ Sous Visual Studio, il est possible d'excuter le code jusqu'au planatage et de regarder la pile d'appels et l'état des variables au moment du plantage. Est il possible de faire la même chose avec DDD (quand il plante sur un segmentation fault le programme est arreté tout de suite) ? Sinon y a-t-il d'autres outils libres qui permettent de debuguer ?
 
 :)  
JIPO


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
mood
Publicité
Posté le 29-04-2006 à 10:09:19  profilanswer
 

n°1356410
couak
Posté le 29-04-2006 à 11:15:46  profilanswer
 

si ca plante et qu'il te fait un core dump tu ouvres ton fichier core (de mémoire je crois qu'on peut le faire)


Message édité par couak le 29-04-2006 à 11:16:25
n°1356658
nargy
Posté le 30-04-2006 à 00:43:36  profilanswer
 

1°) c'est vrai, je n'avais jamais pensé à utiliser les raccourci, mais ils ne fonctionnent pas non plus avec moi...?!
2°) ça s'appelle Status->Backtrace
 
> si ca plante et qu'il te fait un core dump tu ouvres ton fichier core (de mémoire je crois qu'on peut le faire)
- les linux récents sont configurés sans core dump, c'est à dire que la configuration du noyau est telle que la taille maximale du fichier de core dump est réglé à zéro. Pour le vérifier, taper dans un shell:
ulimit -a
si tu obtient:
core file size        (blocks, -c) 0
...ajoute dans ton programme:

Code :
  1. // this is for generating core dumps
  2. #include <sys/resource.h>
  3. ...
  4. // this is for generating core dumps
  5. struct rlimit lim;
  6. lim.rlim_cur=1024*1024*128; // 128 MB
  7. lim.rlim_max=1024*1024*128;
  8. setrlimit(RLIMIT_CORE,&lim);


Celà ne sert que si tu souhaite faire débugger ton programme par une tierce personne, pour ensuite ouvrir le fichier core avec DDD.
Note: RLIMIT_CORE n'est pas documenté dans le manuel.

n°1356663
jipo
Kamoulox !
Posté le 30-04-2006 à 01:53:47  profilanswer
 

Merci pour vos réponses ....
 
PS : les touches de fonction par contre sont actives sur une red-hat 4 AS 64 bits ... (constaté au boulot ...)
 


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1356664
jipo
Kamoulox !
Posté le 30-04-2006 à 01:58:52  profilanswer
 

nargy,
 
Je relis ton post et si je comprend bien il faut activer la fonction status backtrace apres le plantage ?
Il faudra que je teste cela rapidement
 
En effet mon code comporte beaucoup de tableaux de grande taille, du coup bcp de boucles et d'indices et en plus bcp d'itérations (programme de Plus court chemin dans un graphe itéré jusqu'à 200000 fois voir plus). Quand cela plante j'aimerais connaitre les indices en cours qd le plantage a eu lieu ainsi que le contexte exact du plantage ...
Est-ce que status backtrace le permet ?
 


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1356678
nargy
Posté le 30-04-2006 à 09:09:08  profilanswer
 

Le backtrace indique quelles sont les fonctions qu'il était en train d'éxécuter quand ça a planté.
L'endroit où ça a planter est indiqué par une flèche rouge dans le source.
Avec la souris tu peut survoler les sources de ton programme, et quand tu survol une variable, celà t'indique dans une bulle sa valeur au plantage. Tu cliques sur une variable pour l'inspecter, ça l'ouvre à part et tu peut vérifier que les pointeurs sont ok en cliquant dessus. Avec Data->Display->Display tu peut regarder n'importe quelle variable.
 
Quand tu as identifié l'origine approx. du problème, tu peut mettre des breakpoint (arrêt en cas d'éxécution d'une ligne de code précise) ou des watchpoint (pour arrêter en cas de modification d'une variable).
 
Tu peut aussi avoir des infos plus précises comme un dump de la mémoire ou l'état des registres. Tu devrais lire la doc de DDD.
 
Dernier point important: lorsque tu souhaite débugger un programme, utilise les flags -g (pour débuggage) et de préférence -O0 (sans optimisations) pour le compiler. Il peut cependant arriver que le programme plante avec optimisations et pas sans, dans ce cas -g -O2 permettra de débugger mais ce sera plus dur car le compilo ne fait pas correspondre exactement chaque ligne de ton programme à chaque pas d'éxécution.

n°1356922
jipo
Kamoulox !
Posté le 30-04-2006 à 23:14:17  profilanswer
 

Merci pour toutes ces précisions précieuses ...
Je vais en avoir besoin !  [:aztechxx]


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Linux / Debug avec DDD

 

Sujets relatifs
Portage d'application Linux vers Windows[.NET] [En partie résolu] debug appli web
[HELP] - Créer une interface web admin sous linuxlinux gcc pour nagios
[Perl]Code de 8 lignes à essayer sous Perl sous Linuxcreation dll sous linux en c++ ! HELP ME ! plz !
classe de connexion SGBD mysql en dll (.so) sous linuxstdio.h / stdlib.h / etc...h : Où en standrd sous Linux ?
Serveur web apache php mysql phpmyadmin sous linux, tutorielProgramme C Linux : fichier de conf spécifique
Plus de sujets relatifs à : Linux / Debug avec DDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR