2012-11-01 13 views
6

Ho un progetto C++ con un front-end Python generato da SWIG, che costruisco utilizzando CMake. Sto cercando ora di trovare un modo conveniente per eseguire il debug del mio codice misto Python/C++. Sono in grado di ottenere uno stack-trace di errori utilizzando gdb, ma mi piacerebbe avere alcune funzionalità più fantasiose come la possibilità di scorrere il codice e impostare i breakpoint, ad esempio utilizzando Eclipse.Debug di codice misto Python/C++ in Eclipse

Utilizzo del generatore Eclipse per CMake Sono in grado di generare un progetto che sono in grado di importare in Eclipse. Funziona bene e sono anche in grado di scorrere i file eseguibili in C++. Ma poi inizia il problema.

Prima di tutto, non sono in grado di creare il front-end Python da Eclipse. Dalla riga di comando faccio semplicemente "make python", ma non c'è un obiettivo "python" nel progetto Eclipse.

In secondo luogo, una volta compilato il front-end Python, non ho idea di come passare da uno script Python che contiene chiamate alle mie classi C++ incapsulate. Eclipse ha il debug sia per Python che per C++, ma possono essere combinati?

+0

Se non si è specificamente legati a Eclipse (a causa delle preferenze personali o della necessità di eseguire su Linux o OS X), Python Tools per Visual Studio 2.0 beta ha esattamente la funzione che si descrive: https: // pytools .codeplex.com/wikipage? title = Modalità mista% 20debugging –

risposta

2

alcune funzioni più di fantasia, come la possibilità di eseguire il codice e impostare punti di interruzione, ad esempio utilizzando Eclipse

come sono quelle caratteristiche "fantasia"? Puoi già farlo in pdb per Python, o gdb per C++.

Suggerirei di eseguire il codice Python con pdb (o usare pdb.set_trace() per interrompere l'esecuzione in un punto interessante) e collegare gdb al processo in un terminale separato. Usa pdb per impostare i punti di interruzione e, passo a passo, il tuo codice Python. Usa gdb per impostare i punti di interruzione e, passo dopo passo, il codice C++. Quando pdb passa su una chiamata nativa, gdb prenderà il sopravvento. Quando gdb continue consente di riprendere l'esecuzione di Python, pdb prenderà il sopravvento.

Questo dovrebbe consentire di passare tra i punti di interruzione C++ e Python senza dover tracciare attraverso l'interprete.


Disclaimer: in gran parte penso IDE sono bloatware spazzatura, quindi se Eclipse fa hanno un buon modo per integrare questo, non saprei a questo proposito comunque.

+1

Grazie mille per questo suggerimento utile. Ci proverò. Poiché la domanda originale (su Eclipse) è ancora senza risposta, non la contrassegnerò come risposta. Grazie ancora! – Joel