Menulis kod adalah separuh daripada pertempuran. Ia masih perlu dibuat untuk berfungsi dengan betul. IDE dan alat penyahpepijatan banyak membantu kami dalam hal ini.
Menggunakan IntelliJ IDEA sebagai contoh, saya mencadangkan untuk membiasakan diri dengan cara kita boleh mengetahui perkara yang berlaku kepada kod kita apabila ia dijalankan. Nyahpepijat ialah topik yang luas, jadi ulasan ini tidak menawarkan menyelam dalam, seperti penyelam. Tetapi saya harap snorkeling pasti)
Seterusnya, kita perlu menjalankan projek yang telah kita pilih pada pelayan. Proses ini diterangkan dalam dokumentasi kecil yang boleh didapati dalam projek itu sendiri:
Selepas ini, dalam log pelayan kita dapat melihat bagaimana projek baharu itu telah "dikerahkan":
Selepas itu, kami pergi ke halaman
Jika semuanya baik-baik saja, kita akan melihat mesej tentang perkara ini di bawah:
Tekan Enter untuk pergi ke sumber yang ditemui:
Jadi, kita melihat bahawa apabila mendaftar, memberController.register dipanggil. Rupa-rupanya, ini mesti sejenis kelas java. Klik
Memang ada kelas sebegitu. Mari kita masuk ke dalamnya. Nampaknya, perlu ada kaedah daftar. Klik
Memang kami jumpa. Nampaknya, pendaftaran berlaku di sini, dalam memberRegistration.register . Tekan Ctrl dan klik pada kaedah untuk "jatuh" ke dalamnya:
Sekarang mari kita tetapkan "titik putus" atau Titik Putus. Ini ialah penanda yang memberitahu tempat pelaksanaan kod harus dijeda. Pada masa ini kita akan berpeluang mempelajari banyak perkara menarik. Untuk meletakkannya anda perlu klik di tempat di sebelah kanan nombor baris.
Pada halaman http://localhost:8080/wildfly-hibernate4 isikan medan dan klik butang Daftar. Ikon idea pada panel akan berkelip:
Pergi ke Idea, anda boleh melihat bahawa terdapat banyak maklumat menarik dalam panel nyahpepijat:
Di sini anda boleh melihat nilai medan objek. Sebagai contoh, ahli berdaftar terdiri daripada apa:
Hebat. Apa lagi yang boleh kita lakukan? Kita boleh membuka menu konteks dan pilih Evaluate Expression di sana (atau melalui menu Run -> Evaluate Expression). Lebih baik lagi, pada panel kawalan penyahpepijat:
Ini adalah kebolehan yang hebat pada titik putus, mempunyai akses kepada semua yang boleh diakses oleh titik kod itu, untuk melaksanakan sebarang kod yang boleh dilaksanakan pada ketika itu. Sebagai contoh:
Terdapat juga butang kawalan pada panel kawalan penyahpepijat yang bertanggungjawab ke mana anda ingin mengalihkan kawalan aliran program. Bukankah itu ajaib?) Dengan menekan butang F8 (Langkah Keluar), kami berjalan melalui kod tanpa memasukkan kaedah. Dengan menekan F9, kami berhenti berjalan melalui baris kod dengan penyahpepijat, dan memberikan kawalan penyahpepijat ke atas kemajuan program. Jika kita menekan F7 (Step Into), maka kita akan melalui kod tersebut, memasukkan setiap kaedah yang kita temui di sepanjang jalan. Dengan cara ini, beri perhatian khusus kepada blok maklumat ini:
Ini menunjukkan benang yang kita sertai dan kaedah pada susunan benang semasa. Tetapi bukan itu sahaja. Untuk kemudahan, anda boleh membuka tab bingkai. Untuk melakukan ini ia mesti didayakan:
Sekarang pada tab bingkai kita melihat maklumat tentang peralihan daripada kaedah ke kaedah, kerana mula berjalan melalui kod menggunakan Step Into.
Seperti yang kita lihat, kita tidak boleh sentiasa dipindahkan ke tempat program sedang dilaksanakan. Kami kini berada di "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)". Tetapi sebenarnya, kita dalam pelaksanaan. Ini dibuktikan oleh kelas yang ditentukan oleh ini:
Mari kita lihat ini. Seperti yang kita tahu, ia menunjuk kepada objek semasa. Kami berada di TransactionScopedEntityManager. Mengapa Idea tidak dapat menunjukkan kod tersebut kepada kami? Hakikatnya ialah IntelliJ Idea pada masa ini tidak tahu tentang mana-mana TransactionScopedEntityManager, kerana ia tidak disambungkan kepada projek kami (ia bukan dalam kebergantungan projek). Apabila pelayan aplikasi sedang berjalan, terdapat banyak, banyak perpustakaan yang berbeza berjalan di dalamnya. Tetapi kita tahu sedikit tentang mereka, kerana... secara amnya, kita tidak perlu mendalami dalaman, kita hanya memerlukannya untuk berfungsi. Tetapi kadangkala minat kerja atau sukan memerlukannya. Kemudian, anda perlu memaklumkan Idea tentang perpustakaan ini supaya ia tahu di mana untuk mendapatkan kod kelas.
Sekarang, mari kita tunggu hasilnya. Dia tidak akan membuat anda menunggu)
Sekarang, kita perlu mencari kod sumber untuknya di suatu tempat. Dan ada 2 pilihan:
Sekarang mari kita teruskan untuk menerangkan pergantungan. Pada halaman ini anda boleh memuat turun kod sumber. Bagus, kini kami telah memuat turun kod. Yang tinggal hanyalah menyambungkan perpustakaan. Ia menghubungkan dengan sangat mudah. Kita perlu membuka tetapan projek:
Di sana kami memilih "Perpustakaan" dan menambah kod sumber yang diterima ke bahagian "Sumber", dan dalam bahagian "Kelas" kami menunjukkan fail balang perpustakaan itu sendiri daripada direktori WildFly, yang kami dapati menggunakan Pengurus Jauh. Selepas ini, apabila kita menavigasi melalui F7, kita akan melihat kandungan kelas AbstractEntityManager dan TransactionScopedEntityManager, dan juga akan tersedia melalui carian mengikut kelas menggunakan Ctrl+N.
Sekarang titik putus hanya akan menyala apabila namanya Maximilian. Dengan mengklik butang Lagi, set tetapan yang diperluaskan untuk Mata Pecah akan tersedia untuk anda.
Dan buat peraturan baharu untuk jenis pengecualian yang dipilih:
Sebagai contoh, untuk NPE:
#Viacheslav
pengenalan
Sebahagian daripada menulis kod sedang menyahpepijatnya. Dan jika tugas anda termasuk sokongan kod, akan terdapat lebih banyak penyahpepijatan. Selain itu, dengan bantuan penyahpepijatan, anda boleh memeriksa kerja perpustakaan dan rangka kerja yang digunakan sedalam-dalamnya kerana anda boleh menyelami hutan kod orang lain. Untuk menyelam kami memerlukan:- Persekitaran pembangunan: Edisi Komuniti Idea IntelliJ Percuma
- Memasang Maven
- WildFly Application Server 12.0.0.Final
- Kod sumber untuk contoh rasmi: Kod Sumber Mula Pantas
bin\standalone.bat
\hibernate4\README.adoc
Seperti yang ditunjukkan dalam dokumentasi ini, kita perlu menjalankan arahan dalam direktori hibernate4: mvn clean package wildfly:deploy
Kami sedang menunggu mesej bahawa binaan telah berjaya disiapkan:
http://localhost:8080/wildfly-hibernate4
dan kami harus memaparkan halaman dengan borang " Pendaftaran Ahli ". Jadi, persediaan kami untuk eksperimen selesai dan kami boleh mulakan)) Akan ada banyak gambar di hadapan untuk kejelasan, jadi bersiaplah)
Nyahpepijat Jauh
Jadi, kami perlu mengkonfigurasi mod Nyahpepijat supaya IDE kami mengawal pelaksanaan kod pada pelayan aplikasi. IntelliJ Idea datang dalam dua versi: percuma (Komuniti) dan berbayar (Multimate). Yang terakhir boleh dicuba secara rasmi dalam bentuk EAP. Dalam versi Ultimate, semuanya mudah - pelayan aplikasi boleh dilancarkan terus dari IDE dalam mod nyahpepijat. Tetapi dalam versi Komuniti anda perlu melakukan beberapa perkara secara manual. Oleh itu, mari kita pertimbangkan kes yang lebih rumit, i.e. tetapan dalam versi Komuniti. Versi Komuniti mempunyai beberapa had. Khususnya, anda tidak boleh menjalankan pelayan aplikasi daripadanya. Tetapi anda boleh menyediakan penyahpepijatan jauh (Remote Debug), apabila di suatu tempat secara berasingan terdapat pelayan yang sedang berjalan dengan aplikasi yang kami perlukan. Mari gunakan perihalan persediaan dari sini: Nyahpepijat jauh Wildfly dalam edisi komuniti IntelliJ Idea (menyediakan Konfigurasi Larian Jauh untuk port 8787). Selepas konfigurasi, kami melancarkan konfigurasi baharu kami dalam mod Nyahpepijat:Proses nyahpepijat
Mari nyahpepijat menyimpan rekod. Untuk melakukan ini, kita mesti terlebih dahulu memutuskan tempat di mana kita akan meneroka. Berdasarkan tetingkap, kami memerlukan butang "Daftar". Mari cari dalam kod. Jadi, kita memerlukan elemen, ia sepatutnya mempunyai teks: "Daftar". Atau dia sepatutnya ada kaitan dengannya. KlikCtrl+Shift+F
dan cari Daftar dalam petikan. Kami melihat bahawa terdapat satu pada index.xhtml.
Ctrl+N
dan cari:
Ctrl+F12
dan cari kaedah daftar
Menyambungkan perpustakaan pihak ketiga untuk penyahpepijatan
Pertama, kita sendiri perlu memahami jenis perpustakaan yang perlu disambungkan. Cara pertama adalah yang paling sukar - cari di Internet. Kepantasan dan hasil mencari keputusan sangat bergantung pada sejauh mana projek itu diuruskan. Sebagai contoh, WildFly mempunyai repositori terbuka. Jadi apabila kami Google "TransactionScopedEntityManager" kami akan pergi ke https://github.com/wildfly/wildfly/tree/master/jpa/subsystem dan mendapati bahawa kami memerlukan wildfly-jpa. Kaedah kedua adalah betul. Di mana pelayan berada, lihat di sana. Pelbagai cara boleh membantu dengan ini. Sebagai contoh, pada Windows ia boleh menjadi Pengurus Jauh . Di bawah ialah contoh algoritma carian. Setelah memasang dan melancarkannya, gunakan Tab untuk beralih ke salah satu tab, menggunakanAlt+F1
tab kiri atau Alt+F2
kanan, dan pilih partition yang kami perlukan pada cakera keras. Ada kemungkinan bahawa direktori Pengurus Jauh itu sendiri dibuka dalam Pengurus Jauh selepas pemasangan. Untuk pergi ke akar cakera, tekan Ctrl + \
. Menggunakan, Alt+F
buka tetingkap carian, mula menaip nama direktori dan tekan Enter selepas direktori ditemui. Carian ini bijak dan menyerlahkan direktori yang sepadan dengan teks carian. Jika anda memasukkan aksara yang tiada folder, maka aksara tersebut tidak boleh dimasukkan. Dengan cara ini kita pergi ke direktori pelayan aplikasi. Katakan kita tidak tahu di mana modul terletak pada pelayan. Mungkin ini kali pertama dalam hidup anda mendengar tentang sejenis WildFly. Oleh itu, klik segera di sini Alt+F7
untuk mencari fail. Jadi, logik menentukan: kita memerlukan fail dengan perpustakaan. Iaitu, kita memerlukan balang. Perlu ada kelas TransactionScopedEntityManager di dalamnya. Kerana class = fail, kemudian cari "mengandungi". Iaitu, sesuatu seperti ini:
- versioneye.com yang sangat berguna
- Repositori Central Maven
GO TO FULL VERSION