[Python] Blocco casuale nel codice

Pietro Battiston toobaz a email.it
Mar 11 Maggio 2010 19:14:56 CEST


Il giorno mar, 11/05/2010 alle 17.28 +0200, Alessandro Re ha scritto:
> Ciao a tutti,
> tornato dalla Pycon Quattro mi son messo a fare un programmillo in
> python che fa uso di algoritmi genetici.
> Ho un piccolo problema: ogni tanto, abbastanza raramente, il programma
> si blocca su una return (o cosi' pare).
> 
> Purtroppo non sono affatto esperto di python e il debugging mi e'
> tutt'ora oscuro... L'unica cosa che ho scoperto, per ora, usando delle
> print, e' che prima della chiamata di una certa funzione, il tutto si
> blocca.
> Ho provato con pydev, pdb ed idle, ma non riesco a venirne a capo:
> purtroppo non riesco ad interrompere l'esecuzione nel punto in cui si
> blocca (tipo con Ctrl-C), e sicuramente non posso usare dei breakpoint
> perche', nella ipotesi media, devo fare 2000 iterazioni prima che si
> blocchi... A volte si blocca subito, a volte non si blocca proprio.
> 
> Sto usando Python 2.6.2, so che non e' la versione piu' aggiornata, ma
> per ora devo accontentarmi...
> 
> Potreste consigliarmi su come procedere? Un tool che mi permetta di
> fermare il debug nel momento in cui premo una sequenza di tasti, che
> mi permetta di tornare indietro di qualche passo e vedere se ci sono
> delle condizioni specifiche in cui si blocca?
> 
> Il codice, senza commenti, saranno circa 100 righe, potrei copiarvelo
> se necessario.

Nella mia ignoranza di una soluzione pulita, se fossi nella tua
situazione probabilmente farei un

try:
    chiamata_che_ogni_tanto_si_blocca()
except KeyboardInterrupt:
    pass


A questo punto, se ad esempio il tutto gira in un terminale interattivo,
potrei, quando decido che "si č piantato", dare un Ctrl+C ed ispezionare
le variabili che pių mi aggradano.

ciao

Pietro



Maggiori informazioni sulla lista Python