-XX:+PrintStackTrace

forax at univ-mlv.fr forax at univ-mlv.fr
Sat Feb 18 13:40:36 UTC 2017


Hi Chris, 

> De: "Christian Thalinger" <cthalinger at twitter.com>
> À: "Remi Forax" <forax at univ-mlv.fr>
> Cc: hotspot-runtime-dev at openjdk.java.net
> Envoyé: Vendredi 17 Février 2017 22:30:38
> Objet: Re: -XX:+PrintStackTrace

>> On Feb 10, 2017, at 4:25 AM, Remi Forax < forax at univ-mlv.fr > wrote:

>> Hi,
>> i've found that PrintStackTrace do not always print the method descriptor so you
>> don't know precisely the method if there are overloads.

>> 3569 1661 b java.util.stream.Sink$ChainedReference::end (10 bytes)
>> 3570 1662 b java.lang.invoke.MemberName::asSpecial (89 bytes)
>> 3572 1663 n java.lang.invoke.MethodHandle::linkToSpecial(LLLL)V (native)
>> (static)
>> 3572 1664 b java.lang.NoSuchMethodError::<init> (6 bytes)
>> 3576 1665 b java.lang.IncompatibleClassChangeError::<init> (6 bytes)

>> This output is parsed by several external tools like JITWatch but given that
>> some methods (the native one i believe) already have their full signature
>> printed,
>> adding the signature for the others should not impact those tools.

> You mean PrintCompilation?

yes ! 

> If you turn on WizardMode you get signatures as well. Unfortunately:

> src/share/vm/runtime/globals.hpp
> 944 : develop(bool, WizardMode , false, \

> We should make this a diagnostic flag or have some other way to turn on
> signatures for Method::print_short_name.

Usually, the WizardMode prints too many info, so i'm fine with having it for a developer build only. 

In my opinion, either print_short_name should print the signature or PrintCompilation should use another method that print the full signature. 
Currently, when you want to exclude a method or compileOnly a method, you will need the signature anyway, so it wouls be cool to have the same format between the flags related to the JIT commilation of a method. 

>> cheers,
>> Rémi

Rémi 


More information about the hotspot-runtime-dev mailing list