2013-07-26 10 views
5

Quindi eseguo un file nel debugger perl utilizzando perl -d file.pl. Ma poi il file.pl dovrebbe anche prendere argomenti. Come faccio a fornire argomenti al file.pl Ancora una domanda: file.pl ha questa linea in esso:Passare l'argomento al file perl nel debugger e impostare il punto di interruzione nel file eseguito dal sistema

system("./file2.pl"); 

C'è un modo per impostare un punto di interruzione in file2.pl se è in esecuzione come system? Ho trascorso 7 giorni su debugger perl e non sono in grado di impostare un punto di interruzione su file2.pl Please help

EDIT: Ho ottenuto una risposta impressionante da DVK per aggiungere DB :: single = 1. L'ho provato su alcuni file e ha funzionato. Ma ho più di 100 file e se lo faccio manualmente, mi ci vorrà molto tempo. Io uso .perldb e uso afterinit per digitare tutti i comandi. Ho messo in atto un algoritmo che trova il numero di riga di ogni file in cui il punto di interruzione deve andare. Non riesco proprio a caso (usando automaticamente un eseguibile) per aprire tutti quei file e aggiungere DB :: single = 1 dove preferisco. L'intero sistema può bloccarsi in quel momento. Voglio impostare breakpoint in quanto più sicuro

risposta

0

È passarli come si farebbe normalmente:

perl -d ./file2.pl arg1 arg2 arg3 ... 
+0

oh, ho continuato a inserire il percorso del file, grazie ... potresti anche rispondere alla prima questin – ban

+0

così faccio qualcosa di simile: perl -d/percorso/al/file arg1 arg2 ??? – ban

+0

che non funziona in quanto il file si trova in una diversa directory – ban

3

Sì, è possibile.

Aggiungere il seguente codice alla riga in cui si vuole spezzare in file2.pl:

$DB::single = 1; 

Per controllare il debug automaticamente da quel punto, è necessario manipolare @DB::typeahead array. Da perldoc:

È possibile prendere in giro ingresso TTY al debugger con l'aggiunta di comandi arbitrari di @DB :: typeahead. Ad esempio, il file di .perldb potrebbe contenere:

sub afterinit { push @DB::typeahead, "b 4", "b 6"; } 

Questo codice può essere sia in un blocco BEGIN {}, o uno speciale file di configurazione .perldb.

+0

ho come 100 file che vengono chiamati utilizzando il sistema. Se comincio a fare questo, mi ci vorrà più tempo di quanto possa immaginare. Ho i file nei file e vengono tutti chiamati con il sistema o eval – ban

+0

Non riesco a manipolare perl5db in qualche modo ... lo sai? – ban

+0

@ban - sì. Vedi collegato a perldoc: mostra come. – DVK

Problemi correlati