Newsgroup: it.comp.os.linux.development
Titolo: help GDB

Ciao a tutti,
come faccio, con GDB, a visualizzare il contenuto di una variabile membro
di una classe C++?
Quando faccio:"print nome_var", mi dice: "Internal error: `this' is not an
aggregate".
Grazie,
set
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 di una classe C++?
forse print nomeclass::nomevar o nomeclas.nomevar ???
teli suggerisco ma non so veramente la risposta ci sto tentando ;-)

 ha scritto nel messaggio
news:bgc33d$e6l$1...@news.ngi.it...


 stack, memoria etc. (molto piu' veloce di gdb)
io in windows non lo ho :-p ho una cavolo di interfaccia del dev che
sinceramente in debug mi sta facendo diventare scemo e faccio prima a
debuggare con le print su sderr :-p meno male che sono progetti piccoli ...
dovro' impararmi le righe di comando di gdb o trovare altro ...
ciao

 teli suggerisco ma non so veramente la risposta ci sto tentando ;-)
ci ho provato ma non va... comunque grazie :-)
ste


 stack, memoria etc. (molto piu' veloce di gdb)
Perche' lo sto usando su Solaris da remoto senza X e senza KDE.
ste


 
 E' molto strano che non vada; per curiosita' mi sono fatto un
programmino di prova:
#include <iostream>
class miaclasse {
  int	iMioDato;
  char	*psMiaStringa;
public:
  miaclasse(int MioDato, char *MiaStringa) :
    iMioDato(MioDato),
    psMiaStringa(MiaStringa)
  {}
  void stampa() {
    cout <<iMioDato <<" - "<<psMiaStringa <<endl;
  }
};
int main (int argc, char **argv) {
  miaclasse	Variabile = miaclasse(10, "prova");
 
  Variabile.stampa();
 
  return 1;
}
 Che ho compilato cosi':
g++ -g -o main main.cpp
 Ho poi messo breakpoint sia all'interno della classe che nella riga
"Variabile.stampa();" e, in entrambi i casi, sono riuscito a visualizzare
le variabili membro private della classe con:
print Variabile.iMioDato
print Variabile.psMiaStringa
oltre che:
print Variabile
dove ti stampa tutto.
 In programmi dove la classe sta in un file .h/.cpp esterno riesco
comunque a visualizzare tutte le variabili della classe con la stessa
sintassi usata qui sopra.
 Per la cronaca, uso gdb sotto emacs. Su Windows c'e' il gdb grafico
che mi sembra piuttosto valido (anche se ogni tanto va un po' in crisi).
 Saluti, U D A.

 che mi sembra piuttosto valido (anche se ogni tanto va un po' in crisi).
dove e' quello grafico ???
ciao

 le variabili membro private della classe con:
[CUT]
ha funzionato anche a me, questo mi ha fatto capire che:
io debuggo un applicazione multi-thread, dove una stessa classe viene
istanziata piu' volte parallelamente, quindi, non l'ho ancora provato, ma
penso che sia cosi, bisogna switchare su di un thread particolare, e poi
di quell'istanza chiedere i valori dei membri, a sto punto non dovrebbero
esserci ambiguita' di nessuna genere.
Comunque, per vedere i valori dei membri di "miaclasse" non ho dovuto
specificarne l'istanza "Variabile", ma e' bastato solamente il nome
dell'attributo.
Grazie a tutti,
ciao


> Saluti, U D A.
Non ci posso credere, il vecchio UDA !...
-- 
Andrea Laforgia
Open Delphi Manual
http://groups.yahoo.com/group/delphi_open_manual/

 aggregate".
Mooolto strano. Internal error  vuol dire che gdb  e` molto confuso. Sei
sicuro che  il gdb che  usi sia stato compilato  con il supporto  per il
C++?
La sintassi  che usi e` corretta:  all'interno dei metodi per  vedere le
varibili membro  basta usare print  nome, all'esterno si  usa var.membro
(var e` il nome dell'instanza, non della classe).
Kronos
-- 
Home: 
http://kronoz.cjb.net
Ligabue canta: "Tutti vogliono viaggiare in primaaaa..."
Io ci ho provato e dopo un chilometro ho fuso il motore e bruciato
la frizione...



 hmm, da qui non riesco a dirtelo perche' non ho win ... cmq in una
directory /bin , se lo hai installato (si fa dal setup cha ha fatto redhat
o chi per essa).

 
 eheh, ogni tanto resuscito :-P

 ha scritto nel messaggio
news:pan.2003.08.13.09....@uda.itgo.com...

??? che redhat ??? io ho mingw ... non cygwin ...