Eclipse - hata ayıklayıcı kesme noktasında durmaz


98

Bir JUnit'i vurmakta zorlanmaya çalışıyorum. Kaynak kodda, kırılma noktasını iki yerde belirledim: 1) statik bir üyenin başlatıldığı bir satırda 2) test durumlarından birinin ilk satırı.

Hata ayıklayıcı, statik alan başlatma satırında durur. Ancak test durumunda bitmiyor. Test durumunda kırılma noktasını nerede ayarlasam da hata ayıklayıcı burada bitmiyor. Günlükte eklediğim günlük mesajlarının göründüğünü görebildiğim için test olayının yürütüldüğünden eminim.

Herhangi bir yardım çok takdir edilecektir.

Eclipse Galileo ve JUnit4 başlatıcısı kullanıyorum.


1
.Class dosyasında hata ayıklama bilgilerini oluşturmak için kodunuz -g seçeneği açıkken derlenmiş mi? Elbette bu gerekli.
duffymo

Evet -g seçeneği ile derlenmiştir.
Roy

JUnit ve JRE'nin hangi sürümünü kullandığınız hakkında da bilgi ekleyebilir misiniz? Bunun bu bağlamda yararlı olduğuna inanıyorum.
Vineet Reynolds

Kullanımdaki JDK bu arada daha önemlidir (buna neden olabilecek bazı karışık JDK'lar vardır). Lütfen JUnit sürümündeki sorguyu dikkate almayın.
Vineet Reynolds

Üzgünüm bunu eklemeliydim. JDK 1.6 güncellemesi 14.
Roy,

Yanıtlar:


39

Bu, JDK 6 güncelleme 15 sürüm notlarında belirtildiği gibi, JDK 6 Güncelleme 14'teki hatalardan biriyle ilgili olabilir .

Gerçekten sorun buysa, JDK'nın daha yüksek bir sürümüne geçmelisiniz (6u16, 6u18 ve 7b1'e karşı düzeltmeler yayınlandığından bu garanti değildir ). En iyi bahis -XX: + UseParallelGC bayrağını kullanmaktır. İlk GC'yi geciktirmek için minimum ve maksimum yığın boyutunun boyutunu artırmak geçici bir rahatlama sağlar.

Bu arada, diğerlerinin ne durumda olduğunu izlemek için Eclipse'deki bu hata raporunu kullanın .


1
JDK 1.6 güncelleme 16'ya yükselttim. Şimdi belirlediğim tüm kırılma noktalarında duruyor. Yardımın için çok teşekkürler.
Roy

Rica ederim. u16, u15'in sürüm notlarına rağmen, bunun yeterince düzeltildiği sürüm gibi görünüyor.
Vineet Reynolds

Teşekkürler @Vineet - Saçımı bunun üzerine çekiyordum :-)
Jim Garrison

@VineetReynolds: Değerli cevaplarınızın Jboss ve Java ee 6. ile ilgili olduğunu gördüm. Bu sorunu çözmeme yardım edebilir misiniz? stackoverflow.com/questions/28954323/…
beyin fırtınası

99

Düzeltme, tüm kesme noktalarını tıklamak / atlamak kadar basit olabilir. Benim için çalıştı.


3
bunu bir şekilde tıkladığımı fark etmem üç günümü aldı
henry

1
Teşekkürler ... bu araç çubuğu simgesine bir şekilde kazara tıklamış olmalı :-P
kenyee

4
Teşekkürler ... ne zaman tıklandığına dair hiçbir fikrim yok
njfife

1
Çok teşekkür ederim. Diğer kullanıcılar için, bu durumda bir kesme noktası yaparsanız, eğik çizgi şeklinde görünecektir.
saurabheights

Aynısı bana da oldu. Hiç tıklamadım ... !! Sürüm: Mars Yayın (4.5.0) Yapı id: 20150621-1200
Beezer

52

Çalıştır> Hata Ayıklama Yapılandırmaları altında, durumunuza uygunsa, 'Ana olarak durdur'un seçili olduğundan emin olun.


1
Lütfen göndermeden önce önceki yanıtları okuduğunuzdan emin olun. Sorun onların jvm versiyonuydu .. ve üç yıl önce çözüldü. En iyisi, yanıtınız daha önceki yanıtlarda yer almayan önemli bir şeye katkıda bulunmadıkça eski konuları canlandırmamaktır.
Leigh

6
Teşekkürler. @Cevabınız sorunumu çözdü. "Ana olarak dur" un ayarlanmamış olması garip.
Yu Shen

25
Görünüşe göre cevabı, önceki cevaplarda yer almayan önemli bir şeye katkıda bulundu :)
scubbo

Bu, Java uygulamaları için bir seçenektir, ancak Android uygulamaları için geçerli değildir.
Noumenon

21

Genellikle bu benim başıma geldiğinde (nadir ama öyle), çalıştırılan kodun düzenleyicideki koddan farklı olduğu anlamına gelir. Zaman zaman Eclipse için, derlenen sınıfların ve düzenleyicideki kodun senkronize olmadığı ortaya çıkacaktır. Bu olduğunda, her tür tuhaf hata ayıklayıcı davranışıyla karşılaşıyorum (boş satırlarda hata ayıklama, kod satırlarını atlama vb.).

Eclipse'i yeniden başlatmak, tüm projeleri temizlemek ve her şeyi yeniden oluşturmak genellikle işleri temizler. Ayrıca bunu yapma eğiliminde olan Maven eklentilerine de (eski sürümler ... bir süredir sahip değildim) sahiptim.

Aksi takdirde bir hata olabilir, belki de Vineet'in belirttiği şu:

Bu yardımcı olur umarım


Evet, belirttiğiniz şey kodu otomatik olarak yeniden derlemeyen IDE'lerde daha çok oluyor. Oracle JDeveloper (kişisel deneyimlerden) ve daha az ölçüde (Netbeans) istekli bulundu.
Vineet Reynolds

1
İyi tavsiye. Yeterince söylenmedi. Bazen sorunu fazla düşünürüz ve bu sadece sistem uyumsuzdur. Basit sorunları gidermek için bir bilgisayarı yeniden başlatmak gibi.
Xonatron

Teşekkürler, benim durumumdaki sorun buydu. Kulağa aptalca geliyor, ancak basit bir temizlik ve bir derlemeden sonra F5 işi yaptı.
jfajunior

20

Eclipse araç çubuğundaki tüm kırılma noktalarını yanlışlıkla atlamış olabilirsiniz. Bunu düzeltmek için Eclipse -> Çalıştır -> Tüm Kesme Noktalarını Atla'ya gidin.


1
Arggh, bunun için de bir kısayol var, büyük olasılıkla yanlışlıkla bir menü öğesini kontrol etmedim, ancak Ctrl + Alt + B'ye basma ihtimalim oldukça yüksek. Yine de teşekkürler.
Patru

3

Proje -> Temiz benim için JRE 8'de çalışıyor gibiydi


2

Uzakta hata ayıklayıcının çalışması için, java .class dosyalarının hata ayıklama bilgileriyle birlikte uyulması gerekir. Derleyiciye " -g: none " seçeneği iletildiyse, sınıf dosyası gerekli bilgilere sahip olmayacak ve bu nedenle hata ayıklayıcı, uzaktaki bu sınıfla kaynak koddaki kesme noktalarını eşleştiremeyecektir. Bu arada, kavanozlar / sınıf dosyaları gizlenmişse , o zaman herhangi bir hata ayıklama bilgisine de sahip olmayacaktır. Yanıtlarınıza göre, büyük olasılıkla bu sizin durumunuz değildir, ancak bu bilgi aynı sorunla karşılaşan diğer kişiler için faydalı olabilir.


2

Benim durumumda sorun, Hata Ayıklama perspektifinde Hata Ayıklama görünümünün açık olmamasıydı, bu nedenle:

1 - Hata ayıklama perspektifini açtığınızdan emin olun:

tutulma hata ayıklayıcı çalışmıyor 1

2 - Hata ayıklama görünümünü açtığınızdan emin olun:

tutulma hata ayıklayıcı çalışmıyor 2



1

JDK7 için, çalıştır-> Hata Ayıklama Yapılandırmaları, "Hata ayıklama sırasında bir test çalıştırmasından sonra JUnit'i çalışır durumda tut" seçeneğini işaretleyin.


1

"Çalıştır> Otomatik olarak oluştur" seçeneğinin işaretini kaldırdığımda ve yeniden kontrol etmeyi unuttuğumda bir kez başıma geldi.


1

Paketi en üstte beyan ettiğinizden emin olun. Harika kodumda bu, kesme noktalarında durur:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

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

Bu, kesme noktalarında bitmez:

import java.awt.event.ItemEvent;

isMule = false

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

Çok uğraştıktan sonra bu benim sorunumu çözdü. Teşekkürler +1
Federico Piazza

0

Kesme noktalarını kaldırmak için :

  1. Sınıfınızda bir junit testi olarak hata ayıklayın
  2. Hata ayıklayıcınız durduğunda, "değişkenler" ve "ifadeler" in yanındaki "kesme noktaları" sekmesini tıklayın.
  3. Kesme noktası sekmesinin sağ üst tarafında, iki 'X' işaretli düğmeyi tıklayın
  4. Testi durdurun, kesme noktanızı değiştirin ve hata ayıklayıcıyı yeniden çalıştırın

0

Ayrıca diğer satırlardaki kesme noktalarının çalışıp çalışmadığını da doğrulayın, bu hata ayıklayıcıda bir hata olabilir. Eclipse hata ayıklayıcısında, kodu sonraki satırda olan bir boole atamasına bir kesme noktası koymanın işe yaramadığı bir sorun yaşadım, bunu burada bildirdim , ancak önceki veya sonraki satıra koymak işe yaradı.


0

Hiçbir şey işe yaramazsa-

  1. Bu Uzak / Yerel Hata Ayıklama Yapılandırmasını kaldırın ve yeni bir tane oluşturun.
  2. Kaynağı Hata Ayıklama Yapılandırmalarına ekleyin.

0

Diğer bir olası sorun, hata ayıklayıcı bağlantı noktasının güvenlik duvarı tarafından engellenmesidir. Örneğin, katır anypoint stüdyosu kullanıyordum (v 5.4.3). Varsayılan hata ayıklayıcı bağlantı noktası 6666'dır. Bir akış yürütüldüğünde, kesme noktasında durmaz. Bağlantı noktasını başka bir bağlantı noktasına değiştirdiğimde (örneğin 8099), iyi çalıştı.


0

Adresine gidin Right click->Debug Configurationve çok fazla hata ayıklama örneğinin oluşturulup oluşturulmadığını kontrol edin. Yapılandırmadan birden çok hata ayıklama örneğini sildiğimde ve hata ayıklamaya yeni başladığımda sorunum çözüldü.


0

Eclipse'teyseniz,

"Paket Gezgini" altındaki proje klasörünüze sağ tıklayın.

Kaynağa Git -> Temizle ve projeni seç.

Bu herhangi bir karmaşayı temizleyecektir ve kırılma noktanız şimdi çalışmalıdır.



0

Benim durumumda aynı çalışma alanında birden fazla projem vardı. Hata ayıklamaya çalıştığım java dosyası aynı pakete sahip birden fazla projede mevcuttu.

Diğer projeye ihtiyacım yoktu, bu yüzden ilgisiz projeleri kapattım (veya dosyayı ilgisiz projeden kaldırın).


0

Vineet Reynolds cevabıyla ilgili ek bir yorum.

Ben ayarlamak zorunda olduğunu öğrendim -XX:+UseParallelGCiçindeeclipse.ini

Sanal makine (vm) argümanlarını aşağıdaki gibi kuruyorum

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

bu sorunu çözdü.


-2

İşte benim işime yarayan bu:

Yerel sunucu adresimi şu şekilde PHP Sunucusu yapılandırmasına koymak zorunda kaldım :

görüntü açıklamasını buraya girin

Not : bu adres, Apache .conf dosyamda yapılandırdığım adrestir .

Not : Çalışan tek kesme noktası 'İlk satırda kırılma' idi, bundan sonra kesme noktaları çalışmadı.

Not : php.ini dosyanızdaki xdebug özelliklerinizi kontrol edin ve gerekli olmadığını düşündüğünüz her şeyi kaldırın.


1
Bunun soruyu nasıl yanıtladığını göremiyorum (JUnit ve Java hata ayıklaması hakkında)
Newtopian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.