Newsgroup: it.comp.programmare.win32
Titolo: Testare una DLL COM con debug

Come si fa in Visual C++ per creare un progetto
client che richiama una dll, ma entrando nel codice
sorgente della stessa e non nella versione compilata??
In pratica vorrei fare quello che fa Visual Basic!
Grazie

 wrote in message
news:eedvjt$tt6$
1...@newsreader.mailgate.org

???? Il VisualC ti permette di vedere il sorgente di
una DLL, e' quello che faccio tutti i giorni. Qual e'
il tuo problema?
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 il tuo problema?
No intendevo dire che ho un progetto dll com che vorrei testare
creando un client sempre in visual c.
nel senso che quando creo dal client l'oggetto dll, ogni chiamata
ad un membro entri nel codice sorgente della dll e non nel codice
della dll compilata.
Non so se mi sono spiegato bene...in pratica quello che si fa con vb
e puoi specificare il riferimento alla dll che si vuole utilizzare:
quello che punta alla Dll compilata e quello che punta al progetto
che si trova nel gruppo di progetti in cui è presente il client di
test!

 della dll compilata.
Non so se con le dll com e' diverso, ma con le dll che uso io
(fatte in C :-), creo un progetto per la dll, mi faccio la dll,
la compilo, metto i breakpoint che mi interessano, premo F5,
mi viene chiesto quale eseguibile usare per la DLL, scelgo
l'applicativo ed appena arrivo al breakpoint poppa il debugger.
Prova cosi' e fammi sapere.
HTH


 (fatte in C :-), creo un progetto per la dll, mi faccio la dll,
Si purtroppo è diverso con quelle COM, perchè per utilizzarle si
deve inizializzare COM tramite API e in quel modo, va direttamente
nel registro a prendersi il percorso della dll dal registry e tutte
i vari GUID...
Invece con una dll normale, richiami delle normali funzioni e quindi
entra nella dll...
Questo è quello che faccio anche io, ma qui al lavoro ho un progetto
fatto in COM ed ho bisogno di entrare nel codice sorgente.
Potrei creare direttamente l'oggetto, saltando i COM, però dovrei 
includere tutti gli header e i sorgenti e non so se poi funziona per
via delle numerose interfacce presenti e via dicendo....

 i vari GUID...
Potresti tentare di attaccare il debugger direttamente al processo
gia' avviato. Ma non credo che la cosa sia possibile con il debugger
del VisualC. Con WinDBG e' possibile (e neanche difficile), ma lo
conosco troppo poco per dare consigli.


 conosco troppo poco per dare consigli.
questo non lo conosco....

 questo non lo conosco....
E' il kernel debugger di Mamma MS (ma funziona anche in user space),
la sfiga e' che e' documentato da cani. 
Ma se proprio non sai a quale santo votarti...
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
Qualche informazione (ma proprio qualche) la trovi
http://www.microsoft.com/belux/msdn/nl/community/articles/feb05_applicationdebugging.mspx
Anzi colgo l'occasione per chiedere se qualcuno  sa dove reperire
un manuale decente (in qualsiasi formato) di WinDBG.


 wrote in news:eedvjt$tt6$1
@
newsreader.mailgate.org
:

Metti un breakpoint dove ti serve e poi lanci il debugger con F5 (dopo 
aver registrato la DLL in debug).
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 
Se metto il breakpoint nel codice della dll ed avvio, mi dice che verrà
disabilitato e non entra...

AlterX ha scritto:

Ragazzi ci sono riuscito e senza nessuna cosa in particolare!!!!
Per eseguire quanto detto:
1 - Aprire le proprietà del progetto test (il client)
2 - Nel tab "Debug" selezionare dalla combo "Additional DLLs"
3 - Nella lista "modules" aggiungere la DLL che si intende debbugare
Ovviamente la DLL deve essere compilata con i simboli di debug
Il gioco è fatto!
Grazie a tutti per l'aiuto

 Il gioco č fatto!
ha! :)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 un manuale decente (in qualsiasi formato) di WinDBG.
io non lo so, ma di': ti serve per imparare a debuggare il kernel? io
attualmente ci riesco senza problemi; l'help a essere sincero non mi pare
mica così malaccio, ci ho trovato subito tutto quello che cercavo.


 nemmeno l'1.
Ed invece si...sono necessari con le DLL COM perchè altrimenti
non entra nel debug!
Altrimenti questa discussione non l'avrei aperta...non è la prima DLL
che creo e provo.

 Ovviamente la DLL deve essere compilata con i simboli di debug
Questo serve se tu lanci l'exe come progetto principale. Se usi come 
progetto attivo quello della DLL dovrebbe chiederti l'exe da lanciare e 
fare quel passaggio in automatico.
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non č valido)

 
Ahhh interessante!
Non ho mai provato a fare una cosa del genere, però così non puoi 
debbuggare il codice client o sbaglio!?

 debbuggare il codice client o sbaglio!?
No, puoi debuggare anche quello, basta che sia di debug e ci piazzi
dei breakpoint.


 mica così malaccio, ci ho trovato subito tutto quello che cercavo.
Beh, io sono un po' piu' tonto.


 debbuggare il codice client o sbaglio!?
Non sbagli, ma tu chiedevi di debuggare quello della DLL, mica dicevi 
di volere sia l'uovo che la gallina!
Di solito per debuggare gli oggetti COM faccio un programmino in visual 
basic 6 che ha l'indiscutibile pregio di non far perdere troppo tempo. 
Gli unici casi in cui ricorro al C/C++ sono quelli in cui l'oggetto è 
un plug-in di un'applicazione esistente (e allora è meglio debuggarlo 
già dentro quell'ambiente) o se è necessario che supporti il 
multithreading.
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 di volere sia l'uovo che la gallina!
No vabbè era giusto per completare la discussione....

 che non funzionava con le DLL com????
Allora ti chiedo scusa devo aver frainteso quello che dicevi...
Poi è che appunto usando VB per debbuggare altre dll scritte nello
stesso VB, usavo questa tecnica di impostare il progetto principale
sul client....
cmq, questa tecnica che ho trovato, permette di debbuggare anche il
client e quindi è qualcosa in più che non si sapeva (almeno io)

 client e quindi è qualcosa in più che non si sapeva (almeno io)
Se mai faro' qualcosa con COM, verro' a rileggermi il 3d. ;-)
