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.


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.


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.


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.


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


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.


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


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.


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



1

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


1

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


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
...

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

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.


0

Jika tidak ada yang berhasil-

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

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.


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.


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.



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).


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.


-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.


1
Saya gagal untuk melihat bagaimana ini menjawab pertanyaan (tentang debugging JUnit dan Java)
Newtopian
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.