Eclipse - debugger tidak berhenti di breakpoint

96

Saya mencoba untuk memecahkan masalah JUnit. Dalam kode sumber, saya telah menetapkan break point di dua tempat: 1) di baris di mana anggota statis diinisialisasi 2) baris pertama dari salah satu kasus uji.

Debugger berhenti di baris inisialisasi bidang statis. Tapi itu tidak berhenti pada kasus uji. Tidak peduli di mana saya menetapkan break point dalam kasus uji, debugger tidak berhenti di situ. Saya tahu pasti bahwa test case dijalankan karena saya dapat melihat pesan log yang saya tambahkan muncul di log.

Bantuan apa pun akan sangat dihargai.

Saya menggunakan peluncur Eclipse Galileo dan JUnit4.

Roy
sumber
1
Apakah kode Anda dikompilasi dengan opsi -g dihidupkan untuk menghasilkan informasi debug dalam file .class? Itu wajib, tentu saja.
duffymo
Ya itu dikompilasi dengan opsi -g.
Roy
Dapatkah Anda juga menambahkan informasi tentang versi JUnit dan JRE yang Anda gunakan? Saya percaya itu membantu dalam konteks ini.
Vineet Reynolds
Ngomong-ngomong, JDK yang digunakan lebih penting (ada beberapa JDK yang kacau yang dapat menyebabkan hal ini). Harap abaikan kueri di versi JUnit.
Vineet Reynolds
Maaf saya harus memasukkan itu. JDK 1.6 pembaruan 14.
Roy

Jawaban:

39

Ini mungkin terkait dengan salah satu bug di JDK 6 Pembaruan 14, seperti yang ditunjukkan dalam catatan rilis untuk JDK 6 pembaruan 15 .

Jika ternyata ini masalahnya, Anda harus pindah ke versi JDK yang lebih tinggi (meskipun itu bukan jaminan, karena perbaikan telah dirilis terhadap 6u16, 6u18, dan 7b1 ). Taruhan terbaik adalah menggunakan flag -XX: + UseParallelGC. Meningkatkan ukuran ukuran heap minimum dan maksimum, untuk menunda GC pertama, membawa bantuan sementara.

Omong-omong, gunakan laporan bug ini di Eclipse untuk melacak bagaimana keadaan orang lain.

Vineet Reynolds
sumber
1
Saya mengupgrade ke JDK 1.6 update 16. Sekarang berhenti di semua break point yang telah saya tetapkan. Terima kasih banyak atas bantuannya.
Roy
Sama-sama. u16 tampaknya merupakan rilis di mana hal ini telah diperbaiki sampai tingkat yang cukup baik, terlepas dari catatan rilis u15.
Vineet Reynolds
Terima kasih @Vineet - Saya menarik rambut saya untuk yang ini :-)
Jim Garrison
@VineetReynolds: Saya telah melihat jawaban berharga Anda terkait dengan Jboss dan Java ee 6. dapatkah Anda membantu saya memecahkan masalah ini? stackoverflow.com/questions/28954323/…
badai otak
96

Perbaiki bisa sesederhana mengklik run / lewati semua breakpoint. Bekerja untuk saya.

pengguna1164035
sumber
3
butuh waktu tiga hari untuk menyadari bahwa entah bagaimana saya telah mengekliknya
henry
1
Terima kasih ... pasti telah mengklik ikon toolbar itu secara tidak sengaja :-P
kenyee
4
Terima kasih ... tidak tahu kapan itu diklik
njfife
1
Terima kasih banyak. Untuk pengguna lain, dalam situasi ini jika Anda membuat breakpoint maka akan muncul garis miring.
saurabheights
Hal yang sama terjadi pada saya. Saya tidak pernah mengkliknya ... !! Versi: Mars Release (4.5.0) Build id: 20150621-1200
Beezer
52

Pastikan, di bawah Run> Debug Configurations, bahwa 'Stop in main' dipilih, jika berlaku untuk situasi Anda.

Penjawab
sumber
1
Harap pastikan untuk membaca tanggapan sebelumnya sebelum memposting. Masalahnya adalah versi jvm mereka .. dan diselesaikan tiga tahun lalu. Sebaiknya jangan menghidupkan kembali utas lama kecuali tanggapan Anda memberikan kontribusi yang signifikan, yang belum tercakup dalam jawaban sebelumnya.
Leigh
6
Terima kasih. @Jawab jawaban Anda memecahkan masalah saya. Aneh bahwa "Berhenti di utama" tidak disetel.
Yu Shen
25
Tampaknya jawabannya memang menyumbangkan sesuatu yang signifikan yang belum tercakup dalam jawaban sebelumnya :)
scubbo
Perhatikan, ini adalah opsi untuk aplikasi Java tetapi tidak untuk aplikasi Android.
Noumenon
21

Biasanya ketika ini terjadi pada saya (jarang tetapi memang terjadi) berarti kode yang dijalankan berbeda dengan kode di editor. Ini akan terjadi dari waktu ke waktu untuk Eclipse bahwa kelas yang dibangun dan kode di editor tidak sinkron. Ketika itu terjadi, saya mendapatkan semua jenis perilaku debugger yang aneh (men-debug baris kosong, melewati baris kode, dll).

Memulai ulang Eclipse, membersihkan semua proyek dan membangun kembali semuanya biasanya menyelesaikan semuanya. Saya juga memiliki plugin Maven (versi lama ... sudah lama tidak memilikinya) yang memiliki kecenderungan untuk melakukannya juga.

Jika tidak, itu mungkin bug, mungkin yang dikatakan Vineet,

Semoga ini membantu

Newtopian
sumber
Ya, apa yang Anda nyatakan lebih sering terjadi di IDE yang tidak secara otomatis mengkompilasi ulang kode. Oracle JDeveloper (dari pengalaman pribadi) dan pada tingkat yang lebih rendah (Netbeans) ditemukan kurang.
Vineet Reynolds
1
Saran yang bagus. Belum cukup. Terkadang kita terlalu memikirkan masalahnya dan itu hanya sistem yang tidak selaras. Seperti halnya dengan me-reboot komputer untuk pemecahan masalah masalah sederhana.
Xonatron
Terima kasih, itulah masalah dalam kasus saya. Kedengarannya bodoh, tetapi pembersihan sederhana dan F5 setelah membangun melakukan pekerjaan itu.
jfajunior
20

Anda mungkin tidak sengaja melewatkan semua break point di toolbar Eclipse. Untuk memperbaikinya pergi ke Eclipse -> Run -> Skip All Breakpoints.

Jigna.Shah
sumber
1
Arggh, ada jalan pintas untuk ini juga, saya kemungkinan besar tidak secara kebetulan memeriksa item menu, tetapi saya cenderung menekan Ctrl + Alt + B. Terima kasih.
Patru
3

Project -> Clean sepertinya berhasil untuk saya di JRE 8

JH95
sumber
2

Untuk men-debug bekerja dengan remote, file java .class harus dipatuhi bersama dengan informasi debugging. Jika opsi " -g: none " diberikan ke compiler maka file kelas tidak akan memiliki informasi yang diperlukan dan karenanya debugger tidak akan dapat mencocokkan breakpoint pada kode sumber dengan kelas tersebut di remote. Sementara itu, jika file jars / class di- obfuscate , maka mereka juga tidak akan memiliki info debug. Menurut tanggapan Anda, kemungkinan besar ini bukan kasus Anda, tetapi info ini dapat berguna bagi orang lain yang menghadapi masalah yang sama.

Sergeyan
sumber
2

Dalam kasus saya, masalahnya adalah saya tidak membuka tampilan Debug dalam perspektif Debug, jadi:

1 - Pastikan Anda membuka perspektif debug:

eclipse debugger tidak berfungsi 1

2 - Pastikan Anda membuka tampilan debug:

eclipse debugger tidak berfungsi 2

Dani
sumber
2

Hapus semua breakpoint dan tambahkan kembali.

Raffi Khatchadourian
sumber
Ini memperbaikinya untuk saya. Aneh. Thx
Atom999
1

Untuk JDK7, run-> Debug Configurations, centang "Keep JUnit running after a test run when debugging".

Frank Fu
sumber
1

Terjadi pada saya sekali, ketika saya telah menghapus centang "Jalankan> Bangun secara otomatis" dan lupa untuk memeriksanya kembali.

Mathiouss
sumber
1

Pastikan Anda mendeklarasikan paket di bagian atas. Dalam kode groovy saya, ini berhenti di breakpoint:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

Ini tidak berhenti di breakpoint:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...
Don Harrington
sumber
Setelah berjuang keras, ini memecahkan masalah saya. Terima kasih +1
Federico Piazza
0

Untuk menghapus breakpoint :

  1. Debug kelas Anda sebagai pengujian junit
  2. Saat debugger Anda berhenti, klik tab "breakpoints" di samping "variabel" dan "ekspresi"
  3. Di kanan atas tab breakpoint, klik tombol dengan dua 'X'
  4. Hentikan pengujian, ganti breakpoint Anda dan jalankan debugger lagi
Cyrois
sumber
0

Juga verifikasi apakah breakpoint di baris lain DO berfungsi, mungkin ada bug di debugger. Saya punya masalah dengan debugger Eclipse di mana meletakkan breakpoint pada tugas boolean yang kodenya ada di baris berikutnya tidak berfungsi. Saya melaporkan ini di sini , tetapi meletakkannya di baris sebelumnya atau berikutnya berhasil.

Henno Vermeulen
sumber
0

Jika tidak ada yang berhasil-

  1. Hapus Konfigurasi Debug Jarak Jauh / Lokal, dan Buat yang baru.
  2. Tambahkan Sumber di Konfigurasi Debug.
kanaparthikiran
sumber
0

Masalah lain yang mungkin adalah port debugger mungkin diblokir oleh firewall. Misalnya, saya menggunakan mule anypoint studio (v 5.4.3). Port debugger default adalah 6666. Saat aliran dijalankan, aliran tidak akan berhenti di breakpoint. ketika saya mengubah port ke port lain (misalnya 8099), itu berfungsi dengan baik.

RuntimeException
sumber
0

Buka Right click->Debug Configurationdan periksa apakah terlalu banyak instance debug yang dibuat. Masalah saya teratasi ketika saya menghapus beberapa contoh debug dari konfigurasi dan baru mulai melakukan debug.

priyanka_rao
sumber
0

Jika Anda menggunakan Eclipse,

Klik kanan pada folder proyek Anda di bawah "Package Explorer".

Goto Source -> Bersihkan dan pilih proyek Anda.

Ini akan membersihkan semua kekacauan dan break-point Anda seharusnya berfungsi sekarang.

Sureshbabu E
sumber
0

Membuat ruang kerja baru berhasil untuk saya.

Ahmed Tawila
sumber
0

Dalam kasus saya, saya memiliki banyak proyek di ruang kerja yang sama. File java yang saya coba debug ada di lebih dari satu proyek dengan paket yang sama.

Saya tidak memerlukan proyek lain, jadi cukup tutup proyek yang tidak terkait (atau hapus file dari proyek yang tidak terkait).

Shanu Gupta
sumber
0

Satu komentar tambahan tentang jawaban Vineet Reynolds.

Saya menemukan bahwa saya harus mengatur -XX:+UseParallelGCdieclipse.ini

Saya menyiapkan argumen mesin virtual (vm) sebagai berikut

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

yang memecahkan masalah.

Amir Pauker
sumber
-2

Inilah yang berhasil untuk saya:

Saya harus meletakkan alamat server lokal saya di konfigurasi Server PHP seperti ini:

masukkan deskripsi gambar di sini

Catatan : alamat itu, adalah yang saya konfigurasikan di file .conf Apache saya .

Catatan : satu-satunya breakpoint yang berfungsi adalah 'Break di baris pertama', setelah itu, breakpoint tidak berfungsi.

Catatan : periksa properti xdebug Anda di file php.ini , dan hapus semua yang menurut Anda tidak diperlukan.

Francisco Corrales Morales
sumber
1
Saya gagal untuk melihat bagaimana ini menjawab pertanyaan (tentang debugging JUnit dan Java)
Newtopian