Debug Info in class files
Erik Joelsson
erik.joelsson at oracle.com
Fri Dec 28 08:32:15 UTC 2012
On 2012-12-28 02:47, Mani Sarkar wrote:
> Hi guys,
>
> I have been following this thread and would like to see some examples
> on using the below (-g and/or DEBUG_CLASSFILES=true options when
> running the make command with the new build-infra system).
>
This variable only works with the old build system. The question was
directed at jdk7 so I didn't include information about the new build
system in the answer.
> I have also come across a blog on java.net which talks about fastdebug and
> product builds and suggests to do the following
>
> *SKIP_DEBUG_BUILD=true SKIP_FASTDEBUG_BUILD=false DEBUG_NAME=fastdebug* for
> a fastdebug build
>
> and
>
> *SKIP_DEBUG_BUILD=true SKIP_FASTDEBUG_BUILD=true* for a product build
>
To build fastdebug or what used to be called "debug" with the new build
system, you give the parameter --with-debug-level=slowdebug/fastdebug to
configure. The default is "release". There is a shorthand --enable-debug
which does fastdebug. Any debug level except release will enable -g for
javac. For native code, this is what the debuglevels do:
# release: no debug information, all optimizations, no asserts.
# fastdebug: debug information (-g), all optimizations, all asserts
# slowdebug: debug information (-g), no optimizations, all asserts
As I understand it, slowdebug is too slow to be usable so it's rarely
used. Fastdebug is what developers typically build.
There is currently no specific parameter to enable -g just for java
code. One way to achieve it is to add JAVAC_FLAGS=-g to the configure line.
bash configure JAVAC_FLAGS=-g
> Are they flags still valid with the new build-infra system, should they be
> accompanied by any other settings (any configure related commands). Where
> should we expect the build artefacts to be created? Are there any flags to
> build a full debug of the Hotspot? Examples on how to use these flags to
> achieve the three respective types of builds would definitely be helpful.
>
No, the old variables are not valid. If you configure with a different
debuglevel, the build output will by default end up in a different
directory. Example:
build/linux-x86_64-normal-server-release
build/linux-x86_64-normal-server-fastdebug
The debuglevel also affects hotspot.
Examples and help can be found here:
http://openjdk.java.net/projects/build-infra/guide.html
> Whats the difference between a full debug, fastdebug and product build in
> terms of the build process and the end-output?
>
See above.
/Erik
> Miten, if you are still following this thread, please feel free to join the
> Adopt OpenJDK project as suggested by Ben by going to
> http://java.net/projects/adoptopenjdk. The wiki and other links should help
> you get started.
>
> Thanks,
> Mani
>
More information about the build-dev
mailing list