2013-04-22 12 views
6

Io uso Python con estensioni compilate di Cython e Fortran (avvolto con il moderno modulo iso_c_binding di Fortran di Fortran) per il numero di crunch.Debug di Python con estensioni compilate

Finora, non ho una comoda strategia di debug. Io uso pudb per la parte Python. Anche se potrei essere in grado di utilizzare gdb sulle parti del progetto Cython & Fortran, mi trovo a utilizzare invece l'output di testo della console (print()!).

Mi piacerebbe sapere se esistono strumenti che rendono trasparenti i diversi livelli di codice per il debug, ovvero sto cercando una soluzione "one-tool-debug-it-all" a cui non interessa se esegue il codice Python, Cython o Fortran.

Preferirei strumenti che consentano un'interazione user-friendly, come il pudb di cui sopra. Esiste uno strumento di debugging di questo tipo? È il Python mode of GDB il meglio che posso ottenere?

+1

dispiace non ho una soluzione per voi, ma io uso GDB esattamente cosa stai descrivendo. Ho cercato anche una soluzione migliore senza fortuna. – thebigdog

risposta

5

È possibile utilizzare Cython debugger che estende gdb con nuovi comandi che iniziano cy. Questi ti permettono di scorrere il codice Cython, impostare punti di interruzione, ispezionare i locali ecc. E funzionano ancora come i comandi py dalla modalità Python di GDB quando ti trovi in ​​un frame Python. Sfortunatamente non c'è supporto per Fortran.

+0

Questo è un buon consiglio per iniziare! Ci sono frontend grafici che funzionano con 'cygdb'? Non sono riuscito a trovarne. Inoltre, trovo strano eseguire 'cygdb' nella directory di build. – AlexE

+1

Si potrebbe provare 'ddd --pydb --debugger cygdb' o' ddd --gdb --debugger cygdb' per ottenere 'ddd' per eseguire' cygdb' e far finta che sia 'gdb' o' pydb'. Non sei sicuro di quanta funzionalità otterrai. – r3m0t

+0

Non ho dimestichezza con 'ddd', ma almeno le basi stesse funzionano apparentemente (a patto di non entrare nelle funzioni di sistema). Ricevo la stessa visualizzazione facendo clic su variabili, quindi c'è un valore aggiunto alla riga di comando. Apparentemente, purché le routine Fortran utilizzate siano compilate con simboli di debug, è anche possibile passare al codice Fortran! Quindi ora ho solo bisogno di familiarizzare con 'ddd'. Grazie! – AlexE