2015-06-25 3 views
20

Ogni volta che l'aggiunta di un punto di interruzione alla linea di una dichiarazione di metodo (in IntelliJ IDEA o Studio Android), viene visualizzato un popup:breakpoint Metodo possono drasticamente rallentare il debug

breakpoint Metodo possono drasticamente rallentare il debug

Perché sarebbe drammaticamente rallentare il debug, è la mia domanda? Cosa c'è di diverso nel mettere il breakpoint sulla prima riga della funzione?

Grazie!

+0

Vedere http://stackoverflow.com/questions/751105/why-does-the-debugged-program-slow-down-so-much-when-using- method-entry-debuggin – Javaru

risposta

7

mi sono guardato intorno un po ', e ho visto questo post nel Intellij Documetation:

Metodo Breakpoint

punti di interruzione Metodo agiscono in risposta al programma di inserimento o uscire un particolare metodo. Ti consentono di indirizzare le sessioni di debugging in base al metodo che desideri analizzare, piuttosto che in base al numero di riga. I punti di interruzione del metodo consentono di seguire il flusso del programma a livello di metodo e controllare le condizioni di entrata e uscita. Si noti che l'utilizzo dei breakpoint del metodo può rallentare l'applicazione in fase di debug.

Immagino che arresti il ​​programma appena prima che entri nel metodo, in modo che sia possibile valutare i parametri e tali prima di entrare nel metodo.

Il motivo che rallenta drasticamente verso il basso è (questo è quello che ho potuto capire, perché questo è tutto sono riuscito a trovare il metodo di punti di interruzione nella documentazione di IntelliJ) che deve:

lasciare che si segue la il flusso del programma a livello di metodo oltre che di controllo di entrata e uscita condizioni

e suppongo che avrebbe preso molto più tempo di quanto appena arrestare l'esecuzione del programma

+2

Si prega di utilizzare il link modifica sulla tua domanda per aggiungere ulteriori informazioni. Il pulsante Post risposta deve essere utilizzato solo per risposte complete alla domanda. – dhh

+0

Il fatto è che i documenti di intellij sono estremamente scarsi quando si tratta di questo. Ho esaminato la loro documentazione e ho cercato di rispondere alla mia domanda al meglio delle mie capacità con quello con cui dovevo lavorare. Questa mi è sembrata la risposta più completa che ho potuto ottenere – Jeeter

+5

Penso che questo si qualifichi come una risposta valida alla sua domanda però; e giudicando dal [centro assistenza] (http://stackoverflow.com/help/self-answer) un uso perfettamente valido di questo sito. – user4989692

0

La mia comprensione è che il codice deve essere eseguito in modo interpretativo (invece di utilizzare JIT per precompilare?) Quando il punto di interruzione è impostato sulla voce del metodo.

Se si imposta invece il punto di interruzione sulla prima riga del metodo, ho il sospetto che un indice di numero di riga nel codice possa essere utilizzato per scambiare semplicemente un opcode di interruzione per l'opcode originale, in modo che l'applicazione funzioni a tutta velocità. (che mi sembra ancora piuttosto lento quando eseguo il debug;)