Pagina 1 di 1

utilizzo di ddd

Inviato: mer 19 apr 2006, 9:50
da nik600
ciao

sto sviluppando un progetto di discrete dimensioni, in c e multithread.. a volte ho dei problemi con i puntatori, errori di segmentation fault e cose di questo tipo... in un progetto multithread comincia a diventare un po problematico fare il debug "manuale" su stderr...mi sarei deciso quindi ad utilizzare un debugger

pensavo a ddd (il quale non è altro che un'interfaccia grafica a gdb)

dunque, so che devo compilare il programma con l'opzione -g e poi lancio il tutto con

#ddd ./mioeseguibile

posso impostare i vari break, vedere le variabili, ok fino a li ci sono, quello che mi servirebbe però è una sotra di printstacktrace (tipo quello di java) che mi fa capire quale è stata la funzione (o meglio ancora la variabile) che è andata a scrivere porcheria in giro...

leggendo in giro ho visto che è possibile facendo un analisi del file core... il fatto è che non mi viene sempre generato!

ciao e grazie

Inviato: mer 19 apr 2006, 10:08
da alessiodf
il backtrace si può vedere! devo ammettere che ddd è molto ben fatto, anche se per motivi di comodità io utilizzo gdb... in gdb per stampare lo stack c'è il comando

Codice: Seleziona tutto

bt
che ti va vedere molte informazioni sulle chiamate effettuare, ecc... poi con il comando display NOME_VARIABILE/STRUTTURA puoi visualizzare passo passo come mutano le variabili... ddd comunque è meglio utilizzarlo tramite la console sottostante che ti da la possibilità di inserire comandi gdb! Io lo uso per debuggare il kernel :shock: :lol:
comunque se da console entri in gdb, e dai help, ti dice tutti i comandi ordinati per categoria! ce ne sono una svaria! ciao!

Inviato: mer 19 apr 2006, 10:16
da nik600

Codice: Seleziona tutto

#3  0x0804d9e8 in load_db_pacchetti (path=0x805d322 "/home/nik600/prova", db=0x806dde0) at src/packets.c:241
:-)))

thanks!

Re: utilizzo di ddd

Inviato: mer 19 apr 2006, 11:22
da gioco
nik600 ha scritto:ciao

sto sviluppando un progetto di discrete dimensioni, in c e multithread.. a volte ho dei problemi con i puntatori, errori di segmentation fault e cose di questo tipo... in un progetto multithread comincia a diventare un po problematico fare il debug "manuale" su stderr...mi sarei deciso quindi ad utilizzare un debugger
Posso segnalarti anche Electrict Fence (http://perens.com/FreeSoftware/) e LCLint (la versione opensource di lint che è proprietario), due tool che permettono di scovare errori nella gestione della memoria. Non so dirti di più, devo ancora provarli.

Inviato: mer 19 apr 2006, 14:36
da alessiodf
nik600 ha scritto:

Codice: Seleziona tutto

#3  0x0804d9e8 in load_db_pacchetti (path=0x805d322 "/home/nik600/prova", db=0x806dde0) at src/packets.c:241
:-)))

thanks!
:wink: