2014-11-26 16 views
5

Su Windows7 ho uno script python che utilizza DLL Windows, utilizzando .NET Common Language Runtime (CLR). Si verifica un errore all'interno di una delle DLL utilizzate, ma il debugger Python standard esegue il debug solo a livello di codice Python (e non alla DLL).Come eseguire il debug di una DLL di Windows utilizzata all'interno di Python?

Come è possibile eseguire il debug di ciò che accade all'interno delle DLL?

+0

Si sta utilizzando Visual Studio o avete a disposizione Visual Studio? – PaulMcKenzie

+0

No - consiglia di installarlo? Posso quindi eseguire il mio codice in Visual Studio per eseguire il debug del codice? – Alex

+2

Installare Visual Studio. Una volta fatto ciò, è possibile eseguire facilmente il debug della DLL (assumendo che si abbia il codice sorgente, in caso contrario, è necessario eseguire il debug del linguaggio assembly). – PaulMcKenzie

risposta

6

Se si dispone di Microsoft Visual Studio disponibili,

1) Aprire il progetto di Visual Studio che la DLL fa parte di (o creare un nuovo progetto).

2) Se è stata impostata la DLL per il debug (è stata creata con le informazioni di debug e sarà quella che verrà utilizzata dal programma python), è possibile impostare i breakpoint nel codice DLL.

3) Avviare il programma che si desidera eseguire il debug come si farebbe normalmente.

4) Tornare all'IDE di Visual Studio e andare al menu Debug. Scegli l'opzione Attach to Process. Otterrai quindi un elenco di tutti i processi in esecuzione.

5) Scegliere il processo che si desidera eseguire il debug, che sarà il programma python o il runtime che esegue il programma.

6) Siediti e attendi che venga colpito uno dei tuoi punti di interruzione oppure prova un Break All dal menu Debug per interrompere temporaneamente il programma.

Questo è un modo generale di avviare il debug non solo per i programmi python, ma per qualsiasi programma in cui sia necessario eseguire il debug di una DLL utilizzata dal programma.

Si noti che il consiglio di cui sopra funziona meglio se la DLL è stata creata autonomamente con le informazioni di debug e viene utilizzata dall'applicazione python. Se si tratta di una DLL di terze parti in cui non si dispone di codice sorgente, è ancora possibile eseguire il debug da Visual Studio, ma sarà necessario conoscere il linguaggio assembly (poiché il codice sorgente in genere non è disponibile).

+0

Ricorda inoltre (almeno per il 2017) di selezionare Nativo dal menu a tendina se il debug dice una DLL standard di C++ che di default è "python". Si ferma ai punti di interruzione e tutto. Neat! Non avevo idea che tu potessi fare questo. –