JavaRush /Java Blog /Random-IT /Debug in Intellij IDEA: una guida per principianti
Roman Beekeeper
Livello 35

Debug in Intellij IDEA: una guida per principianti

Pubblicato nel gruppo Random-IT
Ciao a tutti, comunità JavaRush. Oggi parleremo di debugging: cos'è e come eseguire il debug in Intellij IDEA. Debug in Intellij IDEA: una guida per principianti - 1L'articolo è rivolto a persone che hanno già una conoscenza minima di Java Core. Non ci saranno strutture o processi complessi per la pubblicazione delle biblioteche. Passeggiata facile. Allora mettiti comodo e cominciamo!

Perché hai bisogno del debug?

Mettiamolo subito in chiaro: non esiste codice senza bug... Così funziona la vita. Pertanto, non dovremmo indebolirci immediatamente e rinunciare a tutto se il codice non funziona come previsto. Debug in Intellij IDEA: una guida per principianti - 2Ma cosa fare? Naturalmente, puoi impostarlo System.out.printlndove puoi e poi ordinare l'output nel terminale nella speranza di riuscire a trovare un errore. Tuttavia, è possibile... e lo fanno, e lo fanno con attenzione utilizzando il logging (puoi leggerlo qui ). Ma se è possibile eseguire il codice sul computer locale, è meglio utilizzare Debug . Vorrei subito notare che in questo articolo considereremo il debug di un progetto all'interno di Intellij IDEA. Se sei interessato a leggere informazioni sul debug remoto, ecco un articolo dalla nostra risorsa .

Cos'è Debug

Debug in Intellij IDEA: una guida per principianti - 3Il debug è il processo di debug (controllo) del codice, quando durante la sua esecuzione puoi fermarti in un luogo designato e osservare l'avanzamento dell'esecuzione. Comprendere lo stato del programma in un determinato luogo. È esattamente come se potessi fermare la vita e guardare tutto dall’esterno. Fantastico, vero? Il nostro obiettivo è imparare in modo rapido e semplice come eseguire il debug delle applicazioni utilizzando il nostro ambiente di sviluppo preferito, Intellij IDEA.

Cosa ti serve per iniziare il debug

Do un consiglio gratuito: mentre leggi l'articolo, fai tutto quello che verrà descritto qui, per fortuna c'è tutto per questo. Di che cosa hai bisogno:
  1. Ambiente di sviluppo Intellij IDEA versione 2019.3.1 e successive. Nel caso in cui qualcuno non ce l'abbia, ecco un link dove è possibile scaricarlo. Scarica la Community Edition perché è quella che userò.
  2. Clona il progetto da GitHub e importalo tramite IDEA.
Apri IDEA: Debug in Intellij IDEA: una guida per principianti - 4seleziona il progetto di presentazione di debug , fai clic su OK e ottieni: Debug in Intellij IDEA: una guida per principianti - 5Lascia il progetto di importazione da fonti esterne, Maven e fai clic su Fine . Dopo aver importato il progetto, possiamo descrivere il processo utilizzando un esempio dal vivo.

Un po' di teoria... lo prometto :D

Per iniziare un po' il debug, devi capire cos'è breakPoint e comprendere alcuni tasti di scelta rapida necessari per iniziare. BreakPoint è un indicatore speciale che visualizza la posizione o lo stato in cui l'applicazione deve essere arrestata. Puoi impostare un punto di interruzione facendo clic con il pulsante sinistro del mouse sulla barra laterale sinistra oppure facendo clic sulla posizione del codice e premendo Ctrl + F8 . I punti di interruzione sono di tre tipi: contrassegno di linea, contrassegno di variabile e contrassegno di metodo. Sembra questo:
  • Per riga:

    Debug in Intellij IDEA: una guida per principianti - 6

    se c'è una lambda nell'espressione, IDEA ti offre una scelta: inserire l'espressione sull'intera riga o specificamente nella lambda:

    Debug in Intellij IDEA: una guida per principianti - 7
  • Per metodo:

    Debug in Intellij IDEA: una guida per principianti - 8
  • Per classe

    Debug in Intellij IDEA: una guida per principianti - 9
I punti di interruzione possono essere rimossi seguendo gli stessi passaggi di quando li si aggiunge. Ci sono situazioni in cui è necessario renderli inattivi (muti). Per fare ciò, nella sezione Debug, puoi trovare un'icona Debug in Intellij IDEA: una guida per principianti - 10che renderà inattivi tutti i breakpoint. Per vedere quali punti di interruzione sono già stati impostati, puoi andare su Debug nell'angolo in basso a sinistra e trovare l'icona Debug in Intellij IDEA: una guida per principianti - 11oppure premere Ctrl+Shift+F8 : Debug in Intellij IDEA: una guida per principianti - 12Quando andiamo all'elenco dei punti di interruzione, vedremo: Debug in Intellij IDEA: una guida per principianti - 13Ci sono due preakpoint Qui:
  • Bee.java:24 - nella classe Bee sulla riga 24
  • Main.java:14 - nella classe Main alla riga 14
Vorrei sottolineare che quando cloni un progetto, non avrai questi BreakPoint: dovrai impostarli tu stesso! È inoltre presente una sezione relativa ai punti di interruzione delle eccezioni Java . Una cosa molto utile. Usandolo, puoi aggiungere un punto di interruzione implicito in modo che il programma si fermi prima di lanciare qualsiasi eccezione o una specifica. Aggiungiamo un punto di interruzione implicito per RuntimeException. Questo è fatto facilmente: nell'angolo in alto a sinistra c'è un segno più “+”. Fare clic su di esso e selezionare Punti di interruzione eccezioni Java : Debug in Intellij IDEA: una guida per principianti - 14nella finestra visualizzata, scrivere il nome dell'eccezione da aggiungere, selezionarla dall'elenco proposto e fare clic su OK : Debug in Intellij IDEA: una guida per principianti - 15terminiamo questo programma educativo e passiamo alla pratica.

Andiamo, entriamo nelle terre selvagge del debug

Debug in Intellij IDEA: una guida per principianti - 16Poiché sono un apicoltore ereditario, per la presentazione di debug ho creato un progetto che descrive il processo di raccolta del nettare da parte delle api, trasformazione del nettare in miele e ottenimento del miele dall'alveare. Sulla base della documentazione del file README, che si trova nella radice del progetto, leggiamo: comportamento previsto - da tutti i fiori da cui si raccoglie il nettare (come valore doppio ), verrà raccolta una quantità di miele pari alla metà di il nettare raccolto. Il progetto prevede le seguenti classi:
  • Ape: un'ape operaia ordinaria;
  • BeeQueen - ape regina;
  • BeeHive - alveare;
  • HoneyPlant - pianta del miele da cui viene raccolto il miele;
  • Principale: dove public static void main()si trova il metodo in cui viene avviato il progetto.
Se esegui il metodo main(), si scopre che non solo non viene conteggiata la quantità di miele, ma appare anche un errore... Debug in Intellij IDEA: una guida per principianti - 17Devi vedere cosa c'è che non va. Dallo stack trace nell'angolo in basso a destra, possiamo vedere che in HoneyPlant.java:20, viene lanciata una RuntimeException: Debug in Intellij IDEA: una guida per principianti - 18Questo è esattamente il nostro caso: c'è una RuntimeException, aggiungiamo una ricerca per tale eccezione, come descritto sopra, ed eseguiamo main()il metodo in modalità di debug. Per fare ciò, fare clic sulla freccia del triangolo verde in Intellij IDEA prima del metodo main(): Debug in Intellij IDEA: una guida per principianti - 19e otterremo il programma interrotto al momento prima che venga attivata l'eccezione con questa icona Debug in Intellij IDEA: una guida per principianti - 20Debug in Intellij IDEA: una guida per principianti - 21. Per ottenere informazioni complete, è necessario guardare nella sezione Debug. Ha Variables , che mostra tutte le variabili disponibili in questa parte dell'applicazione:
  • nettare = 1,0;
  • capacità di nettare = -1,0.
L'eccezione è giusta, poiché il valore della quantità di nettare contenuta nella pianta del miele non può essere negativo. Ma perché succede questo? Dopotutto, c'è un controllo che se il nettare finisce, nelle righe 15-17 viene restituito un valore zero:
if ( nectar == 0 ) {
         return 0;
}
Ma il problema è che sta controllando la variabile sbagliata... e questo è un bug nel codice. Invece di controllare il valore del nettare nel fiore, che si trova nella variabile nectarCapacity , il programma controlla il valore del nettare , che entra nel metodo ed è la quantità che si vuole prelevare dal nettare. Eccolo, il primo bug! Pertanto, lo inseriamo correttamente e otteniamo l'espressione:
if ( nectarCapacity == 0) {
         return 0;
}
Successivamente, eseguiamo main()il metodo in modalità normale (Run `Main.main()`)e non si verificano più errori, il programma ha funzionato: Debug in Intellij IDEA: una guida per principianti - 22L'applicazione ha funzionato e ha dato la risposta: "33.0 il miele è stato prodotto da 7 api di 2 piante mellifere" Andrebbe tutto bene, ma la risposta è sbagliato... Tutto perché nel file README della documentazione è scritto che il nettare si trasforma in miele in un rapporto di 2 a 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Dal metodo principale si vede che ci sono due piante di miele, rispettivamente 30 e 40 unità di nettare, quindi alla fine dovresti ottenere 35 unità di miele. E scrive che 33. Dove sono finite le altre due unità?… Ora lo scopriremo! Per fare questo dobbiamo inserire un punto di interruzione nel metodo Main.main()alla riga n. 28, dove viene eseguito beeHive.populateHoney()ed eseguire mainil metodo in modalità Debug: Debug in Intellij IDEA: una guida per principianti - 23diamo un'occhiata più da vicino a questo punto. Il programma si è interrotto prima di eseguire la 28a riga. In basso vediamo la sezione Debug, che descrive tutte le informazioni sull'applicazione in esecuzione. La parte Variabili, come già accennato, contiene tutte le variabili e gli oggetti accessibili da questa parte dell'applicazione. La parte Frames mostra i passaggi eseguiti dall'applicazione, puoi guardare il passaggio precedente e ottenere tutti i dati locali. Affinché il programma continui a funzionare è possibile premere F9 o l'icona verde, come mostrato di seguito: Debug in Intellij IDEA: una guida per principianti - 24Per interrompere il programma è necessario fare clic sul quadratino rosso: Debug in Intellij IDEA: una guida per principianti - 25Per riavviare l'applicazione in modalità debug è necessario fare clic sulla freccia: Debug in Intellij IDEA: una guida per principianti - 26Successivamente, per procedere passo dopo passo nell'applicazione, è possibile utilizzare due tasti:
  • F8: passa attraverso una sezione di codice e non entrare nei metodi interni;
  • F7: passa attraverso una sezione di codice e inserisci metodi interni.
Pertanto, per mettere in funzione il metodo beeHive.populateHoney(), dobbiamo premere F7 e andremo avanti: Debug in Intellij IDEA: una guida per principianti - 27Successivamente, passeremo alla modalità debug utilizzando F8 utilizzando questo metodo fino alla fine e descriviamo cosa succede in questo metodo:
  • Linea 25 - L'API Stream viene utilizzata per raccogliere il miele da tutte le api;
  • 26a riga: il miele viene aggiunto a quello esistente;
  • 27a riga: per la regina vengono assegnate 2 unità di miele;
  • 28a riga: queste due unità vengono rimosse dalla quantità totale di miele;
  • Riga 29: l'utero mangia questo miele.
Ecco dove sono andate queste due unità, evviva! Dopo aver comunicato con un analista aziendale, giungiamo alla conclusione che il file README della documentazione contiene un errore e dovrà essere aggiornato. Aggiorniamo il file README:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
E questo è tutto: tutti i bug riscontrati sono stati risolti, possiamo continuare tranquillamente a bere caffè e a leggere articoli sull'hub JavaRush con uno sguardo smart :)

Riassumere

In questo articolo abbiamo capito che:
  • non esiste lavoro senza errori e il debugging è un ottimo modo per risolverli;
  • cos'è un punto di interruzione e quali tipi esiste;
  • come configurare il punto di interruzione delle eccezioni;
  • Come navigare in modalità debug.

Articolo da leggere

Vedi anche gli altri miei articoli:
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION