2010-10-21 21 views
34

Hata ayıklama sırasında, Eclipse'deki Debug görünümü çağrı yığınını gösterir. Hangisi harika. Ama Spring ve JUnit koşucusu gibi umurumda olmayan tüm çağrıları filtrelemeyi çok isterim.Java için Eclipse hata ayıklama görünümünde çağrı yığını nasıl filtrelenir

Şu anda çağrı yığınımın bir örneği. Tüm kalanları saklarken girişleri cesur tutmak istiyorum. Herhangi bir şekilde yapmak mümkün mü? (Plug-in, aşağıdaki Tutulma salım, konfigürasyon, ...)

com.myproject.mymodule.MyFinderObject.fetchDestinationSettings com.myproject.mymodule.MyFinderObject.compareCurrentSettings com.myproject.mymodule.MyFinderObject.compareSettings 
sun.reflect.NativeMethodAccessorImpl.invoke0 
sun.reflect.NativeMethodAccessorImpl.invoke 
sun.reflect.DelegatingMethodAccessorImpl.invoke 
java.lang.reflect.Method.invoke 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
com.myproject.caching.CachingInterceptor.invoke 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke 
$Proxy43.doSthWith 
com.myproject.mymodule.MyFinderObjectTest.testSettingComparisonForCurrentSettings 
sun.reflect.NativeMethodAccessorImpl.invoke0 
sun.reflect.NativeMethodAccessorImpl.invoke 
sun.reflect.DelegatingMethodAccessorImpl.invoke 
java.lang.reflect.Method.invoke 
com.myproject.mymodule.MyFinderObjectTest 
com.myproject.mymodule.MyFinderObjectTest 
com.myproject.mymodule.MyFinderObjectTest 
junit.framework.TestResult$1.protect 
junit.framework.TestResult.runProtected 
junit.framework.TestResult.run 
com.myproject.mymodule.MyFinderObjectTest 
junit.framework.TestSuite.runTest 
junit.framework.TestSuite.run 
org.junit.internal.runners.JUnit38ClassRunner.run 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestMethodReference 
org.eclipse.jdt.internal.junit.runner.TestExecution.run 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
+2

Ve bu arada, bunun mantıklı bir özellik talebi olmasını sağlayacağını düşünüyor musunuz? – espinchi

+0

Elbette - o kadar da zor gelmiyor. Hata ayıklama API'lerinin etrafından dolaşmaya gidiyorum. – Ladlestein

+0

@espinchi, Bu özelliği IntelliJ'te kullanıyorum ve çok yardımcı oluyor. – DerMike

cevap

8

yığın izleme görünümü filtre bildiğim tek yolu Mylyn yoluyladır. Etkin bir Mylyn göreviniz varsa ve Hata Ayıklama Görünümünde "Etkin Görev (Deneysel) Odaklama" düğmesini tıklatırsanız yığın izleme, yalnızca geçerli görevin içeriğinde bulunan yöntemleri göstermek için filtrelenir.

Bu durumda, belirli öğeleri yığın izlemeden filtrelemezsiniz; daha doğrusu, her şey varsayılan olarak dışarıda olacaktır ve sadece belirli öğeler görüntülenecektir (görev bağlamında olanlar).

Mylyn hakkında daha fazla bilgi için this yanıtına bakabilirsiniz.

+0

Bilgi için teşekkürler. Bu benim durumum için kesinlikle çok kısıtlayıcı olurdu. Yine de, kimse daha iyi bir şey önermezse, bunu kabul edilen cevap olarak işaretleyeceğim. – espinchi

+0

Bir görev oluşturabilir ve tüm kodunuzu bağlama ekleyebilir ve orada istediğiniz şeylere sahip olabilirsiniz. Yine de denemedim. Düşünebildiğim tek sorun, Mylyn'in uzun zamandır dokunulmamış öğeleri bağlamdan çıkarmaya çalışabilir. – TWiStErRob

11

Hazırlık:here belgesinde belirtildiği gibi step filters kullanabilirsiniz. Ardından, kodunuzda adım-hata ayıkladığınızda, dışlanan paketlere veya sınıflara zıplamaz, ör. JDK'dan veya Hazırda Bekletme veya İlkbahar gibi bazı çerçevelerden. Ama bu sadece bir önkoşuldur.

Çözüm: Yığın traktörü hala bu paketlerin çerçevelerini içerir. Bunları da filtrelemek için Eclipse JDT Hata Ayıklama UI eklentisini yamaları gerekir. Someone else, daha eski Eclipse sürümlerini Indigo'ya kadar yaptı. Ben de mevcut sürüm Luna 4.4.1'de koşmayı başarabilseydim merak ettim, diğer adamın değişikliklerini yeniden yarattım ve yamalı eklentiye bir indirme bağlantısı da dahil olmak üzere Debug View + Stack Filter Plug-In'u GitHub'a aktardı. Yani eğer 4.4.1'de iseniz, şanslısınız ve kendiniz bir şeyleri yama ve derlemenize gerek yoktur. Sadece versiyonumu kullan. Aksi takdirde lütfen repo'umu klonlayın ve değişikliklere bakın, ardından bunları seçtiğiniz eklenti sürümüne uygulayın.

+0

Sweet! Yardım için teşekkürler! –

+0

Merhaba, tutulma klasörüne org.eclipse.jdt.debug.ui_3.6.300.201412061413.jar koymayı denedim ama hiçbir şey olmuyor ... herhangi bir fikir? teşekkürler – nzaero

+0

Hiçbir fikir. Tam olarak Luna 4.4.1 veya başka bir Eclipse sürümünü kullanıyor musunuz? Ve hangi debug.ui sürümü şu anda değiştirilmeden önce yüklenir? – kriegaex

İlgili konular