Newsgroup: it.comp.lang.perl
Titolo: Trace di uno scrip

Salve, prima di disturbare ho dato un’occhiata ai quesiti del sito e non ho trovato nulla in proposito.
Ho l’esigenza di monitorare uno script Perl (radatto da terzi) per capire cosa esegue. 
C’è la possibilità di produrre una trace, possibilmente su file, dei comandi che esegue, magari con il valore delle variabili senza dover modificare l’originale.
Cercando nella documentazione ho trovato Debugger ma non sono riuscito ad ottenere ciò che mi serve.
Ringrazio fin da ora chi mi saprà dare indicazioni con qualche esempio pratico.
Buon pomeriggio.
Beppe  
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 Buon pomeriggio.
Puoi usare moduli quali:
Debug::Trace
http://search.cpan.org/dist/Debug-Trace/
Devel::XRay
http://search.cpan.org/dist/Devel-XRay/
Devel::Trace
http://search.cpan.org/dist/Devel-Trace/
od anche strace per le chiamate di sistema.
Comunque lo strumento migliore rimane il debugger, magari con 
un'interfaccia visuale tipo ptkdb.
(Per gli esempi, guarda le rispettive documentazioni).
In ogni caso, anche se lo script è stato redatto da altri, non dovresti 
avere alcuna difficoltà ad aprirlo e a piazzarci dentro delle "print".
Ciao.

Emanuele Zeppieri ha scritto:

Innanzi tutto grazie per l'attenzione, ho provato ad eseguire Debug::Trace ovvero, ho scaricato dal sito il file Debug-Trace-0.04.tar, eseguto lo script Makefile.pl e mi sembra di non aver ricevuto messaggi di errore
 
D:\Perl\download\Debug-Trace-0.04>perl Makefile.pl
Checking if your kit is complete...
Looks good
Unable to find a perl 5 (by these names: D:\Program Files\Perl\bin\perl.exe perl.exe perl5.exe perl5.8.8.exe miniperl.exe, in these dirs: . D:\Program Files\Perl\bin\ C:\WINDOWS\system32 C:\WINDOWS C
\WINDOWS\System32\Wbem C:\Program Files\Common Files\Roxio Shared\DLLShared\ D:\Program Files\Perl\bin)
Writing Makefile for Debug::Trace
Quando provo ad esegure ottengo il seguente messaggio:
D:\PerlSource\script\pl>perl -MDebug::Trace=foo,bar 
debugger.pl
Can't locate Debug/Trace.pm in @INC (@INC contains: D:/Program Files/Perl/site/lib D:/Program Files/Perl/lib .).
BEGIN failed--compilation aborted.
Sapresti dirmi dove sbaglio, ho installato la versione 5.8.8
Grazie, buon pomeriggio.


 BEGIN failed--compilation aborted.
Debug::Trace non l'hai installato, hai soltanto creato il makefile.
Se hai ActivePerl, usa ppm ("Perl Package Manager" dal menu, oppure 
"ppm" da una DOS box).
Meglio ancora se ti installi anche l'ultima versione di ActivePerl 
(5.8.9.825, se vuoi la 5.8), disinstallando prima la versione che hai 
adesso.
Infine assicurati che la directory che contiene perl*.exe sia nel tuo PATH.
Se vuoi compilare (e installare) i moduli a mano, ti serve anche nmake:
http://johnbokma.com/perl/make-for-windows.html

 http :// johnbokma,com /perl/make-for-windows.html
Spero di non abusare della tua disponibilità:
da DOS ho lanciato il comando ppm che ha attivato Perl Package Mnager, se ho ben capito, scegliendo il tasto 'All Package' e, per il mio caso, digitando 'debug' nella barra denominata filter mi avrebbe dovuto elencare tutte le package che soddisfavano il filtro, putroppo non presenta nulla, non avrebbe dovuto collegarsi a 
http://search.cpan.org/dist/XML-Simple-2.14/
 e selezionando quella di interesse procedere con l'installazione.
Se tolgo il filtro elenca package già installate.
Cercando, ho trovato in documenti di 
perl.it
 (
http://www.perl.it/documenti/faq/iclp_view.html?pag=5&faq=2
) ed ho tentato di eseguire il comando ppm install nomemodulo.ppd ma in effetti nella cartella che ho decompresso non è presente nessun modulo con estensione .ppd.
Non so come venirne fuori.
Di nuovo grazie, buona serata.


OT:
sarebbe bello ci fosse una versione x64 di nmake X___X.
Purtroppo non posso usarlo e devo ricorrere a MinGW, ma se hai qualche
dritta migliore ti ascolto volentieri!
Come editor uso notepad++ e lo trovo ottimo, pensi ci sia qualcosa di
meglio?
grazie ancora Emanuele, sei il mio faro!!!


 Non so come venirne fuori.
Nessun problema, ricorda soltanto che è sempre molto più semplice di 
come sembra ;-)

 meglio?
E' veramente una questione di gusti personali.
Potresti provare Eclipse+EPIC:
http://www.epic-ide.org/
già tutto integrato in questa distribuzione Eclipse:
http://www.easyeclipse.org/site/distributions/lamp.html
ha anche il vantaggio di essere cross-platform (Win, Mac, Linux).

Emanuele Zeppieri ha scritto:

Ciao,
ho seguito il tuo consiglio, ho rimosso ActivePerl che avevo installato, ho fatto ulteriore pulizia di vecchie directory di beckup (nel cambio di pc avevo tenuto traccia di precedenti installazioni) su cui puntava ppm e sono riuscito, come da manuale, a caricare la package ed al comando perl -MDebug::Trace=foo,bar 
mioscript.pl
 non segnala errori, mi aspettavo il listing delle istruzioni eseguite, esegue regolarmente lo script senza produrre la trace ?
Buon pomeriggio.


 mi aspettavo il listing delle istruzioni eseguite, esegue regolarmente lo script senza produrre la trace ?
Se hai scritto *esattamente* così, non mi meraviglia ;-)
In quel modo hai richiesto di tracciare le chiamate alle sub foo() e 
bar(), che con ogni probabilità non sono nel tuo codice.
Quindi o specifichi delle subroutine esistenti nel tuo programma o non 
ottieni niente.
Se invece vuoi tracciare ogni istruzione eseguita, allora usa 
Devel::Trace, in questo modo:
perl -d:Trace 
mioscript.pl
Se poi trovi l'output eccessivo, puoi tornare a Debug::Trace e tracciare 
soltanto le sub di maggiore interesse... OK?

Emanuele Zeppieri ha scritto:

Ciao,
scusa se mi sono eclissato, ma mi sono dovuto occupare di un altro problema, riprenderò appena possibile.
Voglio ringraziarti per le informazioni che mi hanno permesso di conoscere meglio questo linguaggio e per la impagabile disponibilità che offri.
Buona giornata.
Beppe
p.s. farò sapere come è andata seguendo le ultime indicazioni fornitemi
