Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Sep 2009 16:37:33 -0400
From:      Andrew Cagney <andrew.cagney@gmail.com>
To:        dfr@rabson.org
Cc:        freebsd-current@freebsd.org
Subject:   Re: New BSD licensed debugger
Message-ID:  <c51b944b0909161337j49f94882we5a4cef8973fbb08@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Wicked; the location code, in particular, is sick.  As you've noticed,
this isn't rocket science; and good language choice does make life
easier.

Several things to consider.

Rather than frame-base, I'd use CFA or call-frame-address found in
.debug_frame or CFI when identifying frames (and determining if the
frame changed such as for step).  In addition, since frameless
functions don't modify the CFA (they don't use the stack) you'll want
to be combining it with the function's address giving a
FrameIdentifier (oh, and IA-64 has two stacks so ... :-)

The unwinder looks to be trying to simultaneously handle both
high-level inline and low-level ABI (CFA) frames, an alternative
approach is to keep them separate (decorator pattern works well here)
having an abi-only chain and then above that a chain of higher-level
possibly inline frames.

A non-polling implementation would make a long term goal - which
requires a mechanism for simultaneously blocking on both process and
i/o events - on linux, at least, this is still a rats nest of bugs.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c51b944b0909161337j49f94882we5a4cef8973fbb08>