Pages : 1
#1 Le 19/04/2011, à 09:41
- shadowless
debugger [Résolu]
Bonjour
si le vous plait , et ce qu'il y quelqu'un qui peut me proposer un debugger autre que GDB , avec un interface graphique
Dernière modification par shadowless (Le 21/04/2011, à 16:42)
Hors ligne
#2 Le 19/04/2011, à 09:57
- Anium
Re : debugger [Résolu]
Bonjour,
Il existe DDD disponible dans les dépôts.
Hors ligne
#3 Le 19/04/2011, à 10:33
- shadowless
Re : debugger [Résolu]
si le vous plait j'ai placé un breakpoint sur ma fonction principale linge22 ou s'est écrit l'instruction " Image2.Load(argv[2]);
sur Windows et avec le debugger de code::block ,j'ai pu accéder au variable res alors que sous Linux
et avec le GDB il me dit ($1=<value optimized out>)
on plus j'ai même pas le même contenu pour les autres variables entre les deux plateforme pourtant je suis sur la meme ligne , meme instruction
#include "MCharImage.h"
#include "MDetecteur.h"
#include "MListePI.h"
//#include "MListeCouples.h"
#include "MUtils.h"
using namespace std;
using namespace local_vis_eric;
int main (int argc,char** argv)
{
MCheckCpu();
if (argc==3)
{
//Ouverture des images
cout << "ouverture des images" << endl;
MCharImage Image1,Image2;
Image1.Load(argv[1]);
Image2.Load(argv[2]);
cout<<"toto est la "<<endl;
cout << "ouverture des images ok" << endl;
int x=Image1.x();
int y=Image2.y();
cout << " dim : " << x << " " << y << endl;
//Detection des points
MDetecteurHarris Detecteur1(x,y),Detecteur2(x,y);
MListePI ListePI1,ListePI2;
int res = Detecteur1.DetecteBaquets(Image1,ListePI1,8,8,20,500,true);
cout << "Npoints : " << res << endl; //Subpixel=true
Detecteur2.DetecteBaquets(Image2,ListePI2,8,8,20,500,true); //Subpixel=true
cout << ListePI1.getNbPoints() << " ; " << ListePI2.getNbPoints() << endl;
}
else cout << "Usage : exemple image1.pgm image2.pgm" << endl;
//system("pause");
return 0;
}
Hors ligne
#4 Le 19/04/2011, à 11:14
- Uda
Re : debugger [Résolu]
As tu vérifié que ton programme a bien été compiler avec l'option -g sous linux ?
Il y a aussi l'interface graphique Nemiver sous gnome qui est un peu plus simple et intuitive que DDD.
Dernière modification par Uda (Le 19/04/2011, à 11:15)
Hors ligne
#5 Le 19/04/2011, à 11:38
- shadowless
Re : debugger [Résolu]
oui j'ai mis tous les flags qu'il faut sur mon makefile
CFXXLAGS=-W -Wall -ansi -c -g -O3 -mtune=core2 -mmmx -msse -msse2 -mssse3 -Wno-strict-aliasing
Hors ligne
#6 Le 19/04/2011, à 14:24
- Le Farfadet Spatial
Re : debugger [Résolu]
Salut à tous !
oui j'ai mis tous les flags qu'il faut sur mon makefile
CFXXLAGS=-W -Wall -ansi -c -g -O3 -mtune=core2 -mmmx -msse -msse2 -mssse3 -Wno-strict-aliasing
Pour le débogage, je te conseille d'utiliser plutôt les drapeaux suivants :
CXXFLAGS=-ansi -pedantic -Wall -g
Certains des drapeaux que tu as activés posent problème avec C++ ou avec le débogage.
À bientôt.
Le Farfadet Spatial
Hors ligne
#7 Le 19/04/2011, à 14:47
- shadowless
Re : debugger [Résolu]
j ai changé les flags mais tjrs le même problème
j'ai déclaré un autre variable pour faire un teste mais il me donne toujours la même choses quant je fais print:
(gdb) print x
$ <value optimized out>
int main (int argc,char** argv)
{
int xx1=0;
MCheckCpu();
..........
}
Hors ligne
#8 Le 19/04/2011, à 15:03
- Le Farfadet Spatial
Re : debugger [Résolu]
Salut à tous !
j ai changé les flags mais tjrs le même problème
Curieux. Essaye ceci :
CXXFLAGS=-O0 -ansi -pedantic -Wall -g
Également, j'aimerais que tu me donnes le résultat des commandes suivantes :
$ gcc -v
$ gdb -v
Peux-tu donner un exemple complet minimal, c'est-à-dire du code qui compile et qui contient tout pour reproduire ton problème, mais uniquement ce qu'il faut pour reproduire ton problème ?
À bientôt.
Le Farfadet Spatial
Hors ligne
#9 Le 19/04/2011, à 15:51
- shadowless
Re : debugger [Résolu]
Résultat de la commande gcc -v
elhajjaji@elhajjaji-laptop:~/WINDOWS/version1/harris$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-4ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9)
Résultat de la commande gdb -v
elhajjaji@elhajjaji-laptop:~/WINDOWS/version1/harris$ gdb -v
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
pour l'exemple vous avez deja le code en haut et je vais essayer de vous montrer ce que j'obtiens avec le GDB
elhajjaji@elhajjaji-laptop:~/WINDOWS/version1/harris$ make
g++ -o toto main.o McharImage.o MCorrelation.o MDetecteur.o MFloatImage.o MHomographie.o MListePI.o MParamsIntrinseques.o MShortImage.o MSignedShortImage.o MUtils.o Matrix33.o jtmatrix.o
[color=#DF1F59]elhajjaji@elhajjaji-laptop:~/WINDOWS/version1/harris$ gdb toto -q[/color]
Reading symbols from /home/elhajjaji/WINDOWS/version1/harris/toto...done.
(gdb) list
3 #include "MListePI.h"
4 //#include "MListeCouples.h"
5 #include "MUtils.h"
6
7 using namespace std;
8 using namespace local_vis_eric;
9
10 int main (int argc,char** argv)
11
12 {
[color=#E31C34](gdb) list[/color]
13
14 MCheckCpu();
15 //MSetWithMmxSseUse(2); //0->pas de SIMD, 1->MMX et SSE (Pentium 3 et AMD), 2->SSE2 (Pentium 4)
16
17 if (argc==3)
18 {
19 //Ouverture des images
20 cout << "ouverture des images" << endl;
21 MCharImage Image1,Image2;
22 Image1.Load(argv[1]);
(gdb) list
23 Image2.Load(argv[2]);
24 cout<<"toto est la "<<endl;
25 cout << "ouverture des images ok" << endl;
26 int x=Image1.x();
27 int y=Image2.y();
28
29 cout << " dim : " << x << " " << y << endl;
30 //Detection des points
31 // Attention : utiliser un detecteur diffent pour chaque image
32 // Les detecteurs doivent etre conserves pour l'appariement
(gdb) break 26
Breakpoint 1 at 0x804a8c1: file main.cpp, line 26.
(gdb) run 1000001.pgm 1000005.pgm
Starting program: /home/elhajjaji/WINDOWS/version1/harris/toto 1000001.pgm 1000005.pgm
ouverture des images
toto est la
ouverture des images ok
Breakpoint 1, main (argc=3, argv=0xbffff4b4) at main.cpp:26
26 int x=Image1.x();
(gdb) print x
[color=#E4E01A]$1 = <value optimized out>[/color]
Hors ligne
#10 Le 19/04/2011, à 16:03
- Le Farfadet Spatial
Re : debugger [Résolu]
Salut à tous !
Bon, j'ai tes versions de GCC et de GDB.
pour l'exemple vous avez deja le code en haut
Ce code a des dépendances qui ne sont pas la bibliothèque standard, ce qui rend sa compilation problématique (ça nécessite d'installer une kyrielle de bibliothèques juste pour un test). Essaye de produire un exemple qui ne nécessite que la bibliothèque standard.
À bientôt.
Le Faradet Spatial
Hors ligne
#11 Le 19/04/2011, à 17:17
- shadowless
Re : debugger [Résolu]
merci , c'est résolus
a bientot
Hors ligne
#12 Le 20/04/2011, à 15:29
- Le Farfadet Spatial
Re : debugger [Résolu]
Salut à tous !
merci , c'est résolus
Parfait. Ajoute la balise « [Résolu] » dans ton titre et ce serait bien également que tu indiques ce qui n'allait pas et comment tu as résolu le problème.
À bientôt.
Le Farfadet Spatial
Hors ligne
#13 Le 20/04/2011, à 16:01
- shadowless
Re : debugger [Résolu]
je ne trouve pas comment modifier le titre et ajouter cette balise
et comment j ai résolus le problème,
sur le debug du Cood::blocks même avant d'atteindre l'instruction qui manipule le variable ça te permet d'afficher son contenu même par fois il s'agit juste d'une valeur aléatoire que le système donne à ce variable , alors que c'est le contraire avec GDB sous linux il faut soit initialiser le variable ou bien attendre qu'il soit manier dans une instruction
merci encore pour votre AiDe
Hors ligne
#14 Le 21/04/2011, à 16:32
- Le Farfadet Spatial
Re : debugger [Résolu]
Salut à tous !
je ne trouve pas comment modifier le titre et ajouter cette balise
Sur ton premier message, clique sur « Modifier ». Ensuite, ajoute la balise dans le titre.
par fois il s'agit juste d'une valeur aléatoire que le système donne à ce variable
En C++, les variables n'ont pas de valeur initiale donnée par défaut : elle prend la valeur présente dans la case mémoire (ou le registre) qui lui a été alloué, sauf si l'on a produit du code spécial pour l'initialisation.
À bientôt.
Le Farfadet Spatial
Hors ligne
Pages : 1