SORU
2 Temmuz 2009, PERŞEMBE


NullPointerException izleme hata ayıklama ajan olmadan kullanılamaz yığını

Son zamanlarda bir NullPointerException neden olan bir hata buldum. Özel ve standart slf4j bir deyimi kullanırken yakalandı kaydedilir. Kod aşağıda kısaltılmış:

for(Action action : actions.getActions()) {
    try {
        context = action.execute(context);
    } catch (Exception e) {
        logger.error("...", e);
        break;
    }
}

Gördüğünüz gibi, süslü bir şey yok. Ancak, her istisna var o ifadeleri günlüğü, sadece bir yığın izleme, bir baskı değil. Bu baskılar tüm ileti olarak gösterilen "...") ve özel durum sınıfı (java.adı lang.NullPointerException).

Yığın bir istisnadır tembel yüklenen izleme beri, düşündüm de belki bir çeşit talimat verilen bir konudur ve e aramaya karar verdi.() getStackTrace günlük deyim önce. Bu hiçbir fark yaptı.

Hata ayıklama aracı etkinken yeniden başlatmaya karar verdim. Ben bile işleme bağlı olduğundan, ancak, şimdi izlerini baskı vardı yığını olduğunu fark ettim. Çok açık bir şekilde hata ayıklama ajan varlığı, bazı ek hata ayıklama bilgileri kullanılabilir hale gelmesine neden oldu.

O zamandan beri durum kök neden tedavi ettim. Ama bu iz, bir hata ayıklayıcı olmadan kullanılamaz yığın neden öğrenmek istiyorum. Herkes biliyor musun?

Açıklama:bu günlük bir sorun değildir. Yan yakalamak/aynı hayal etmeye çalışın, ama işin içinde, değerini yazdırmak için:

e.getStackTrace().length

Bu baskılar bir hata ayıklayıcı olmadan '0', pozitif bir sayı yazdırır bir hata ayıklayıcı (bu durumda 9).

Bu FIRSATLAR üzerinde 1.6.0_13, 64 bit, amd64, linux 2.6.9 olmuyor . daha fazla bilgi:

CEVAP
15 Ocak 2010, Cuma


JVM bayrak -XX:-OmitStackTraceİnFastThrow bu kullanım için JVM durum performans optimizasyonu devre dışı bırakabilirsiniz. EĞER bu parametre verilmezse bayrağı devre dışı bırakan, stacktrace sunulacak.

Lütfen daha fazla bilgi için aşağıdaki sürüm notlarına bir bakalım:

"Sunucu derleyici VM şimdi sağlar yığını düzeltmek için backtraces "soğuk" built-in özel durumlar. Böyle bir durum birkaç kez atıldığında performans amaçlı yöntemi çekirdekler olabilir. Yeniden derleme sonra, derleyici hızlı bir taktik bir yığın izleme sağlamayan ön tahsis istisnalar kullanarak seçebilirsiniz. Tamamen ön tahsis istisnalar kullanımını devre dışı bırakmak için, bu yeni bayrak kullanımı: -XX:-OmitStackTraceİnFastThrow." http://java.sun.com/j2se/1.5.0/relnotes.html

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoHotkey Tutorials

    AutoHotkey T

    29 Mayıs 2010
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • pucksz

    pucksz

    24 Mart 2006