2013-03-01 10 views
8

pensare a questo scenario:Debug con PyCharm, come entrare in progetto, senza entrare librerie Django

metto a punto il mio progetto Django e io passo attraverso il codice (in e out). Talvolta il debugger entra nelle librerie di Django o in altre librerie esterne.

Qualcuno sa come impedire al debugger di inserire codice esterno? O almeno un "grande" passo indietro per riportare il debugger al codice del progetto?

+2

mettere un punto di interruzione nel codice e correre a esso. – duffymo

+0

Il passaggio alla chiamata del metodo alla libreria non funziona? –

+0

dai uno sguardo qui: http: // stackoverflow.it/questions/11966276/ignore-exceptions-gettato-e-preso-dentro-una-biblioteca –

risposta

0

Tutto sembra uguale al debugger, non è in grado di distinguere tra il codice o il codice di Django - è tutto Python. Quindi eseguirà tutto, tuttavia se vuoi impedirgli di eseguire il drill down così in basso dovrai iniziare a "scavalcare" le righe di codice invece di "inserirle".

Secondo lo PyCharm docs, si vorrà utilizzare F8 quando si vede una riga di codice che potrebbe essere un gateway per gli interni di Django. Se ti trovi accidentalmente nel codice sorgente di Django, puoi toccare Shift+F8 finché non sei fuori.

+2

Grazie ragazzi per le risposte! Infatti Shift + F8 è quello che ho usato finora, l'ho trovato noioso e una perdita di tempo. Sebbene occasionalmente guardassi il codice di Django, la maggior parte delle volte guardo il mio progetto. Forse sarà una funzionalità nelle future versioni di PyCharm. – Dan

+0

Non sarà una funzionalità nelle versioni future, perché non è necessario. I punti di interruzione e il superamento delle linee di codice lo risolvono già. – Matt

+2

* non è in grado di distinguere tra il tuo codice o il codice di Django * Impostando un punto di interruzione devi dire al debugger dove fermarsi. Perché pensi che non ci possa essere un modo per dire al debugger dove non fermarsi? Vedi la domanda [Come posso configurare Qt Creator e/o gdb in modo che durante il debug del mio programma usando le librerie Qt il debugger eviterebbe di entrare nei file di origine di Qt?] (Http://stackoverflow.com/q/1448426/95735) che mostra che c'è un tale meccanismo in 'gdb'. Se un debugger ha questa caratteristica, probabilmente anche altri debugger possono averlo. –

6

Qualcuno sa come impedire al debugger di immettere codice esterno?

Sì, Dmitry Trofimov knows;

(...) aggiungere moduli non si vuole risalire al dict DONT_TRACE in <pycharm-distr>/helpers/pydev/pydevd.py
Quella è una soluzione hacky (...)

Se si desidera che questa funzione essere meno hacky si può votare su di esso visitando problema
PY-9101 Implement "Do not step into the classes" option for Python debugger


Coloro che utilizzano PPB potrebbero essere interessati a sapere che c'è tale caratteristica in pdb;

A partire da Python 3.1, Pdb classe ha un nuovo argomento chiamato skip -

class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)

L'argomento salto, se indicato, deve essere un iterabile di glob-stile modelli di modulo nome. Il debugger non entrerà nei frame che originano in un modulo che corrisponde a uno di questi modelli. 1

1 Se un frame è considerato originari di un determinato modulo è determinato dalla __name__ nelle globali del telaio.

L'esempio riportato nella documentazione mostra come saltare i pacchetti di Django -

import pdb; pdb.Pdb(skip=['django.*']).set_trace()

Problemi correlati