backtrace() vs. _Unwind_Backtrace()

David Mosberger davidm@napali.hpl.hp.com
Fri Dec 5 04:12:00 GMT 2003


>>>>> On Fri, 5 Dec 2003 15:23:24 +1300, Bryce McKinlay <bryce@mckinlay.net.nz> said:

  Bryce> I have been working on a patch that revamps libgcj's stack
  Bryce> tracing, using the libgcc unwinder. I should be able to post
  Bryce> it this weekend.

Great!

  Bryce> One outstanding issue is what to do about Windows, which
  Bryce> apparantly doesn't use the DWARF unwinder.

What kind of unwind info does Windows use on x86?  Is there a public
document describing it somewhere?

Anyhow, I suppose this is a cue for me to put in a pitch for libunwind? ;-)
(See http://www.hpl.hp.com/research/linux/libunwind/)

In my opinion, a DWARF2 unwinder is only a partial solution anyhow,
because not all platforms use DWARF2 unwind info and because it
doesn't support dynamically generated code.  In contrast, the
libunwind API is mostly platform-independent (not limited to DWARF2),
supports dynamically generated code, and can be used for debuggers etc
as well.

Fortunately, as far as gcj is concerned, all of this doesn't really
matter: the GCC built-in unwinder and (the latest) libunwind support
the same _Unwind_* API, so whatever the unwinder, gcj should work fine
when using _Unwind_Backtrace().

	--david



More information about the Java mailing list