Scrivere il codice è metà dell'opera. Deve ancora essere fatto funzionare correttamente. Gli IDE e gli strumenti di debug ci aiutano molto in questo.
Utilizzando IntelliJ IDEA come esempio, propongo di familiarizzare con come possiamo scoprire cosa succede al nostro codice quando viene eseguito. Il debug è un argomento ampio, quindi questa recensione non offre immersioni profonde, come un subacqueo. Ma spero di sicuro di fare snorkeling)
Successivamente, dobbiamo eseguire il progetto che abbiamo scelto sul server. Questo processo è descritto in una piccola documentazione che può essere trovata nel progetto stesso:
Successivamente, nel log del server possiamo vedere come è stato “deployato” il nuovo progetto:
Successivamente, andiamo alla pagina
Se tutto va bene, vedremo un messaggio al riguardo di seguito:
Premi Invio per andare alla fonte trovata:
Quindi, vediamo che durante la registrazione viene chiamato memberController.register , che a quanto pare deve essere una sorta di classe Java. Clicca
In effetti, esiste una classe del genere. Approfondiamolo. A quanto pare, dovrebbe esserci un metodo di registrazione. Fare clic
In effetti, l'abbiamo trovato. A quanto pare, la registrazione avviene qui, in memberRegistration.register . Premi Ctrl e fai clic sul metodo per "cadere" al suo interno:
Impostiamo ora un “break point” o Break Point. Si tratta di un indicatore che indica il punto in cui deve essere sospesa l'esecuzione del codice. In questo momento avremo l'opportunità di imparare molte cose interessanti. Per dirlo, è necessario fare clic nel punto a destra del numero di riga.
Nella pagina http://localhost:8080/wildfly-hibernate4 compila i campi e clicca sul pulsante Registrati. L'icona dell'idea sul pannello lampeggerà:
Andando su Idea, puoi vedere che ci sono molte informazioni interessanti nel pannello di debug:
Qui puoi vedere il valore dei campi dell'oggetto. Ad esempio, in cosa consiste un Membro registrato:
Grande. Cos'altro possiamo fare? Possiamo aprire il menu contestuale e selezionare Valuta espressione lì (o tramite il menu Esegui -> Valuta espressione). Meglio ancora, sul pannello di controllo del debugger:
Questa è un'abilità fantastica in un punto di interruzione, avere accesso a tutto ciò a cui ha accesso quel punto di codice, per eseguire qualsiasi codice che potrebbe essere eseguito in quel punto. Per esempio:
Sul pannello di controllo del debugger sono inoltre presenti pulsanti di controllo responsabili della posizione in cui si desidera spostare il controllo del flusso del programma. Non è magico?) Premendo il pulsante F8 (Step Out), percorriamo il codice senza inserire metodi. Premendo F9, smettiamo di scorrere le righe di codice con il debugger e diamo al debugger il controllo sull'esecuzione del programma. Se premiamo F7 (Step Into), esamineremo il codice, inserendo ogni metodo che incontreremo lungo il percorso. A proposito, presta particolare attenzione a questo blocco di informazioni:
Questo mostra il thread in cui ci troviamo e i metodi sullo stack del thread corrente. Ma non è tutto. Per comodità, puoi aprire la scheda Cornici. Per fare ciò deve essere abilitato:
Ora nella scheda frame vediamo le informazioni sulla transizione da un metodo all'altro, perché ho iniziato a esaminare il codice utilizzando Step Into.
Come vediamo, non possiamo sempre essere trasferiti dove il programma viene attualmente eseguito. Ora siamo a "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)". Ma in realtà siamo in fase di attuazione. Ciò è evidenziato dalla classe specificata da questo:
Diamo un'occhiata a questo. Come sappiamo, punta all'oggetto corrente. Siamo a TransactionScopedEntityManager. Perché Idea non può mostrarci il codice? Il fatto è che IntelliJ Idea attualmente non conosce alcun TransactionScopedEntityManager, perché non è collegato al nostro progetto (non è nelle dipendenze del progetto). Quando un server delle applicazioni è in esecuzione, al suo interno sono in esecuzione moltissime librerie diverse. Ma sappiamo molto poco di loro, perché... in generale, non abbiamo bisogno di approfondire gli aspetti interni, abbiamo solo bisogno che funzioni. Ma a volte il lavoro o l’interesse sportivo lo richiedono. Quindi, devi informare Idea di questa libreria in modo che sappia dove trovare il codice della classe.
Adesso aspettiamo il risultato. Non ti farà aspettare)
Ora dobbiamo trovare il codice sorgente da qualche parte. E ci sono 2 opzioni:
Passiamo ora a descrivere la dipendenza. In questa pagina è possibile scaricare il codice sorgente. Ottimo, ora abbiamo scaricato il codice. Non resta che connettere la libreria. Si collega in modo estremamente semplice. Dobbiamo aprire le impostazioni del progetto:
Lì selezioniamo "Librerie" e aggiungiamo i codici sorgente ricevuti nella sezione "Sorgenti", e nella sezione "Classi" indichiamo il file jar della libreria stessa dalla directory WildFly, che abbiamo trovato utilizzando Far Manager. Successivamente, quando navigheremo attraverso F7, vedremo il contenuto delle classi AbstractEntityManager e TransactionScopedEntityManager e diventeremo disponibili anche attraverso una ricerca per classe utilizzando Ctrl+N.
Ora il punto di interruzione verrà attivato solo quando il nome è Maximilian. Facendo clic sul pulsante Altro, sarà disponibile una serie estesa di impostazioni per i punti di interruzione.
E crea una nuova regola per il tipo di eccezione selezionato:
Ad esempio, per gli NPE:
#Viacheslav
introduzione
Parte della scrittura del codice ne sta eseguendo il debug. E se le tue attività includono il supporto del codice, il debug sarà ancora maggiore. Bene, inoltre, con l'aiuto del debug, puoi esaminare il lavoro delle librerie e dei framework utilizzati tanto profondamente quanto puoi immergerti nella giungla del codice di qualcun altro. Per la nostra immersione avremo bisogno di:- Ambiente di sviluppo: IntelliJ Idea Community Edition gratuita
- Maven installato
- WildFly Application Server 12.0.0.Final
- Codice sorgente per esempi ufficiali: codice sorgente Quick Start
bin\standalone.bat
\hibernate4\README.adoc
Come indicato in questa documentazione, dobbiamo eseguire il comando nella directory hibernate4: mvn clean package wildfly:deploy
Stiamo aspettando un messaggio che la compilazione è stata completata con successo:
http://localhost:8080/wildfly-hibernate4
e dovremmo visualizzare una pagina con il modulo “ Registrazione membro ”. Quindi, la nostra preparazione per gli esperimenti è completa e possiamo iniziare)) Ci saranno molte immagini più avanti per maggiore chiarezza, quindi preparatevi)
Debug remoto
Quindi, dobbiamo configurare la modalità Debug in modo che il nostro IDE controlli l'esecuzione del codice sul server delle applicazioni. IntelliJ Idea è disponibile in due versioni: gratuita (Community) e a pagamento (Ultimate). Quest'ultimo può essere ufficialmente provato sotto forma di EAP. Nella versione Ultimate tutto è semplice: il server delle applicazioni può essere avviato direttamente dall'IDE in modalità debug. Ma nella versione Community devi fare alcune cose manualmente. Consideriamo quindi un caso più complicato, vale a dire impostazione nella versione Community. La versione Community presenta alcune limitazioni. In particolare, non è possibile eseguire un server delle applicazioni da esso. Ma puoi impostare il debug remoto (Remote Debug), quando da qualche parte separatamente c'è un server in esecuzione con l'applicazione di cui abbiamo bisogno. Usiamo la descrizione della configurazione da qui: Debug remoto Wildfly nell'edizione della community IntelliJ Idea (impostazione della configurazione di esecuzione remota per la porta 8787). Dopo la configurazione, lanciamo la nostra nuova configurazione in modalità Debug:Processo di debug
Eseguiamo il debug del salvataggio del record. Per fare questo, dobbiamo prima decidere il luogo in cui esploreremo. A giudicare dalla finestra, abbiamo bisogno del pulsante "Registrati". Troviamolo nel codice. Quindi, abbiamo bisogno di un elemento, dovrebbe avere il testo: "Registrati". Oppure dovrebbe avere qualcosa a che fare con tutto ciò. Fare clicCtrl+Shift+F
e cercare Registrati tra virgolette. Vediamo che ce n'è uno su index.xhtml.
Ctrl+N
e cerca:
Ctrl+F12
e cercare il metodo di registrazione
Collegamento di librerie di terze parti per il debug
Innanzitutto dobbiamo capire noi stessi che tipo di biblioteca deve essere collegata. Il primo modo è il più difficile: cercare su Internet. La velocità e il risultato nel trovare un risultato dipendono molto da quanto bene è stato gestito il progetto. Ad esempio, WildFly ha un repository aperto. Quindi, quando cerchiamo su Google "TransactionScopedEntityManager", andremo su https://github.com/wildfly/wildfly/tree/master/jpa/subsystem e scopriremo che abbiamo bisogno di wildfly-jpa. Il secondo metodo è corretto. Dov'è il server, guarda lì. Vari mezzi possono aiutare in questo. Ad esempio, su Windows potrebbe essere Far Manager . Di seguito è riportato un esempio di algoritmo di ricerca. Dopo averlo installato e avviato, utilizza Tab per passare a una delle schede, utilizzandoAlt+F1
la scheda di sinistra o Alt+F2
quella di destra, e selezionare la partizione di cui abbiamo bisogno sul disco rigido. È del tutto possibile che la directory stessa di Far Manager sia aperta in Far Manager dopo l'installazione. Per andare alla radice del disco, premere Ctrl + \
. Utilizzando, Alt+F
apri la finestra di ricerca, inizia a digitare il nome della directory e premi Invio dopo aver trovato la directory. Questa ricerca è intelligente ed evidenzia le directory che corrispondono al testo della ricerca. Se si immettono caratteri per i quali non esistono cartelle, tali caratteri non potranno essere inseriti. In questo modo andiamo alla directory del server delle applicazioni. Diciamo che non sappiamo dove si trovano i moduli sul server. Forse questa è la prima volta nella tua vita che senti parlare di una specie di WildFly. Cliccate quindi subito qui Alt+F7
per cercare i file. Quindi, la logica impone: abbiamo bisogno di un file con la libreria. Cioè, abbiamo bisogno di un barattolo. All'interno dovrebbe esserci una classe TransactionScopedEntityManager. Perché class = file, quindi cercare "contiene". Cioè, qualcosa del genere:
- Versioneeye.com super utile
- Repository centrale Maven
GO TO FULL VERSION