Intellij'de hata ayıklarken dönmeden önce dönüş değerini bulabilir miyim?


127

İle:

Object method(){
    ...
    return /* some complex expression */
}

Hata ayıklama sırasında hangi değerin döndürüleceğini görebilmemin bir yolu var mı? Bir şekilde dönüşten hemen sonra vurulacak bir kesme noktası ayarlamak gibi, ancak yürütme çağrı koduna gitmeden önce mi? Dönüş değerinin ne olduğunu bilmek ve ayrıca tüm yerel değişkenlerin hangi değerlerinin olduğunu görebilmek istiyorum.

Şimdi bunu yolu geçici bir değişken yaparak geçerli: Object ret = /* something complex */; return ret;. Ancak bu bir güçlüktür ve fazladan gereksiz bir kod satırı ekler.

Not: Bu, Visual Studio'da hata ayıklarken dönmeden önce dönüş değerini bulabilir miyim sorusuyla aynı sorudur , ancak intellij için.

Yanıtlar:


31

Bunu yapmanın birkaç yolu var gibi görünüyor. İlki, yöntem imzasında kesme noktasının ayarlanmasını içerir, sizin durumunuzda Object method () {. Bu, yöntemin giriş ve çıkışını izlemenizi sağlayacaktır. Bunu , yukarıda belirtildiği gibi " İzleme yöntemi dönüş değerleri" ile birlikte kullanmanız gerektiğine inanıyorum , ancak hesaplaması çok uzun sürdüğü için bunu tam olarak test edemedim. Dikkat edin, bu hata ayıklayıcının performansını önemli ölçüde azaltır ve hata ayıklama işlemi daha uzun sürer.

Ayrıca aşağıdakileri manuel olarak da yapabilirsiniz.

  1. Dönüş hattında kesme noktasını ayarlayın.
  2. Dönüş çizgisine vurulduğunda, dönüş satırına tıklayın, özellikle imleci görmek istediğiniz işlemin üzerine getirin, ardından Çalıştır-> İfadeyi Değerlendir'e (veya Alt-F8) gidin ve o noktada ifadeyi çalıştırmalı ve geri döndüğünü iade edin.

Not : Bir kesme noktası oluşturursanız, IDEA'ya onlarla yapmasını söyleyebileceğiniz birçok şey vardır, örneğin bir kesme noktasını kırarsanız, onlara bir ifade gerçekleştirmelerini ve günlüğe kaydetmelerini söyleyebilirsiniz. Bir kesme noktasına sağ tıklarsanız ve özellikleri tıklarsanız neler yapabileceğinizi araştırabilirsiniz.

GÜNCELLEME : Bunu yapmanın ilk yolu ile birlikte deneyin. Hata ayıklama oturumunu yavaşlattığı veya dondurduğu için "İzleme yöntemi dönüş değerlerini" kullanmayın. Bunun yerine aşağıdakileri yapın

  1. Görmek istediğiniz iade ifadesine sağ tıklayın ve "Saatlere Ekle" ye tıklayın
  2. Ardından, yukarıda belirtildiği gibi bir yöntem kesme noktası ekleyin.
  3. Programınızda hata ayıklayın ve yönteminiz yöntem imzasında bozulacaktır.
  4. Devam etmek için F9 tuşuna basın ve dönüş ifadesi hesaplandıktan SONRA tekrar kırılmalıdır ve dönüş ifadeniz izleme sütununda olmalıdır.

Yöntem kesme noktalarının daha yavaş olduğunu ve bu nedenle daha fazla zaman alabileceğini unutmayın; performans isabetinin çok fazla olduğunu fark ediyorsanız bunu iyileştirmenin zor bir yolu, yalnızca dönüş ifadesi kesme noktasını (yöntem kesme noktası olmadan) ayarlamak ve ardından yöntem kesme noktasını eklemektir. SONRA return ifadesi kesme noktası isabet eder ve ardından devam eder.

Bu yardımcı olur umarım,


1
Aslında, (new X ()) öğesine bir kesme noktası ve bir saat ekledikten sonra, döndürülen nesneyi 'analiz etmek' için o saatte Alt + F8 tuşlarını kullanabilirsiniz. Bu gerçekten kullanışlıdır.
Kedar Mhaswade

Bunu doğru anlıyorsam, burada önerilen çözüm yalnızca ifadenin hiçbir yan etkisi yoksa işe yarar. Değişkenlere / izleme penceresine genel olarak karmaşık ifadeler koymanızı kesinlikle önermiyorum.
Mashmagar

En az 2016.3'ten beri çok daha iyi bir yol var. Ayrıntılar için Birchlabs'ın yanıtına bakın. Şimdi kabul edilen cevap olmalı.
Mikezx6r

151

IntelliJ IDEA 2016.3'te: hata ayıklama panelinin dişli düğmesinin içinde gizlidir. Emin olun Show Method Return Valuesedilir işaretli .

IntelliJ IDEA 2016.3 "Yöntem Dönüş Değerlerini Göster"

Dönüş değerini görmek istediğiniz işlevin içinde bir yere girmek için hata ayıklayıcıyı kullanın .

işleve adım atmak

İşlevden çıkın (veya kaçana kadar adım atın ):

dışarı çıkmak

Dönüş değerinin değişkenlerinizde göründüğüne dikkat edin:

dönüş değerini gözlemlemek


3
@Stan Çalışılmış bir örnek sağlamak için cevabımı güncelledim.
Birchlabs

40

Orada İzle yöntemi dönüş değerleri mevcut düğme ayıklayıcı panelinin .

Yöntemin dönüş değerlerini izle : Son çalıştırılan yöntemin dönüş değerlerini izlemek için bu düğmeyi tıklayın.

yöntem dönüş değerlerini izle

IDEA 12 yapılandırması:

FİKİR 12


2
"Değişkenler" veya "İzlemeler" sekmelerinde hiçbir şey görünmüyor. Eğer önemliyse Groovy kullanıyorum. Ayrıca bu, yöntemin kendi bağlamından ziyade çağıran kodun bağlamından çalıştırılan son yöntemin dönüş değerini gösterecek gibi görünüyor. Bunun önemli farkı, eğer onu yöntemin bağlamından görebiliyorsanız, yöntemin yerel değişkenlerinin değerlerine de bakabilmenizdir. Bu, yöntem yanlış bir değer döndürüyorsa neyin yanlış gittiğini görmenizi sağlayabilir.
Kyle

3
"Değişkenler" bölmesinde (tamamen nitelenmiş yöntem adı kullanılarak) dönüş değerini gösterir. Bu kabul edilen cevap olmalıydı. @CrazyCoder +1 benden :-)
Omri Spector

4
@CrazyCoder: Bu özellik hala IDEA 13 için var mı? Onu bulamıyorum.
kevinarpe

1
Intellij 15 kullanıyorum ve bunu da görmüyorum. Bir ekran görüntüsü paylaşabilir misin?
Sanjiv Jivan

3
Ocak 2017'de (Idea 2016.3.2): Ayarlar simgesine (2. görüntüdeki sarı menü öğesinin hemen üzerindeki dişli çark) tıklamanız gerekir, "Yöntem Dönüş Değerlerini Göster" i içeren bir menü gösterilir. Yeniden başlatma şey gerek yok: Değişkenler hemen altında görmek bir yönteminden sonraki döndükten sonra, onun ObjectClassName.methodName () belirir bu .
18446744073709551615

1

Bu bir süre önce sorulmuştu ama bu durumu halletmek istediğimde farklı bir yöntem kullanıyorum.

Hata ayıklarken, ifadeyi işaretleyebilir (sizin durumunuzda, "dönüş" ün hemen sonrasındaki ifade) ve CTRL + ALT + F8 (Hızlı Değerlendirme İfadesi) tuşlarına basabilirsiniz. IntelliJ, size döndürülecek değeri gösteren küçük bir pencere açacaktır.


2
Bir Intel grafik yongası kullanıyorsanız, bu klavye kısayolu ikincil monitörlerinizi kapatacaktır .
Coli

1
Linux kullanıcıları: Ctrl + Alt + F8 - Kullanıcıyı 2. GUI Terminaline gönderir. Ubuntu'da geri dönmek için Ctrl + Alt + F2 tuşlarına bastım.
Dmitriy Pavlukhin
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.