Newsgroup: it.comp.os.linux.development
Titolo: debuggare un file .so è possibile?

Salve, spero di non chiedere l'impossibile.
Sto scrivendo un plugin per interfacciare le note librerie QT, all'RDMBS
della borland l'Interbase (o anche il Firebird che deriva da ib), 
è tutto quasi finito, ho soltanto qualche piccolo
problemino ancora da risolvere, a livello di allocazione.
Il problema è che mi sto scervellando, e per risolvere anche un
semplicissimo segfault, passo ore e ore intere, visto che non ho modo di 
debuggarlo, sto andando avanti con una serie infinita di fprintf(stderr,
"..."); piazzate un pò qua e un pò la nel codice, per
capire quello che succede durante l'esecuzione...
Vorrei debuggare il mio plugin (è una normalissima libreria dinamica .so)
durante l'esecuzione, ma non ho idea di come fare (ne se si possa fare,
visto che non è un eseguibile vero e proprio).
Vi prego di aiutarmi, anche perché aiutando me aiuterete tutta la comunità
del free software, visto che quando sarà pronto rilascerò tutto sotto
licenza GPL.
tnx

compila tutto con el opzioni -g -ggbd3
poi fai girare il programma sotto gdb,
quanto arriva un seg fault,gdb ti dice
qualr \'e la funzione che lo ha generato
riguardati il funzionamento di gdb
ciao ciao
-- 
	..... il Grande Incubo continua ......
 
                    Jonathan

 visto che non è un eseguibile vero e proprio).
Hai provato con strace? alle volte da un mucchio di risultati 
insperati...
-- 
HappyCactus - Registered Linux User #209744
http://www.angelfire.com/jazz/happycactus/index.html
Made with 100% recycled electrons

 ciao ciao
Il problema è un altro. Non riesco a far girare il programma con gdb,
perché è una libreria a collegamento dinamico.
Devo per forza agganciare l'esecuzione ad un altro processo che
chiamerebbe tale libreria. Ma non mi funziona, e va in crash.
Ho provado usando ddd (non ho ancora imparato come funziona gdb, anche se
ho intenzione di farlo perché mi sembra uno strumento potentissimo), ma
quando aggancio il debug ad un processo, mi esegue il debug di quel
processo... e non della libreria condivisa chiamata da quel processo...
Mi spiego meglio. La libreria che io ho scritto è un plugin per le
librerie QT che permette di interfacciarle ad interbase. Il plugin viene
riconosciuto e caricato automaticamente dalle qt.
Se carico il qtdesigner, me lo rileva e riesco tranquillamente ad usarlo,
qtdesigner mi istanzia la libreria senza nessunissimo problema.
Se voglio provare a debuggare la mia libreria, dovrei debuggare
esattamente l'istanza che sta usando in quel momento qtdesigner,
altrimenti debuggerei un codice morto, non eseguito da alcun processo. Non
so come fare...
L'opzione "Attach to process" di ddd (e quindi di gdb) non fa al caso mio,
in pratica mi effettua il debug di qtdesigner, e non della mia lib, quindi
non mi serve a nulla, anche se provo ad impostare i breakpoints, me li
salta tranquillamente, perché evidentemente non è collegato all'istanza
che ha creato qtdesigner...
So disperato :(
Il lavoro ora è completo al 99% e lo finirò tranquillamente anche senza
debug, i problemi di allocazione li ho risolti, ma ora è una questione di
principio...
Aiutatemi! HELP ME! :)) 

 qtdesigner mi istanzia la libreria senza nessunissimo problema.
provato a compilare le qt con il debug ?



uhm... c'ho pensato, ma ho preferito evitare.
1) c'ho messo un casino di tempo per compilare le qt e farle funzionare,
figurarsi per compilarle con -g.
2) se un domani dovessi debuggare un'altra libreria dinamica, e non avrò i
sorgenti del programma chiamante, come farei a debuggarla? Quindi
preferisco pensare di non poter ricompilare le qt, per concentrarmi sul
mio problema principale.
Debuggare una libreria .so
Uff..... :(