utilizzo di ddd

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

utilizzo di ddd

Messaggio 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

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio 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!

nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

Messaggio da nik600 »

Codice: Seleziona tutto

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

thanks!

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: utilizzo di ddd

Messaggio 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.

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio 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:

Rispondi