- CommandLineUserInterface is now a team listener. Consequently, when asked
to generate a debug report on startup without running the input loop,
it now waits for receipt of the debug report event to terminate.
- Style fixes.
- DebugReportGenerator is now its own BLooper that generates reports asynchronously
instead of in TeamDebugger's message loop.
- If a stack trace isn't yet available, DebugReportGenerator now waits for it to
be generated.
- Extended Team to add a listener event for report generation completing. DebugReportGenerator
now generates such an event when it has finished writing a report.
This is so that it does not get draw flush to the edge of the
list view and there is just a bit of padding between the left
edge and where the text starts. The 4 pixels matches other
places that override the DrawItem() method (like Tracker prefs).
Adjust the spacing of the time zone settings in Time prefs so that
switching between Local time and GMT time won't resize the window
when hiding and showing the current and preview times. This means
that the Time preferences window always stays a constant height
without any tricks needed to adjust it after the fact. Before this
change the Time preferences window would change height depending
on the setting, which while not terrible, was probably not
what the author intended.
As a side note I adjusted the window to use B_USE_DEFAULT_SPACING
instead of hardcoded 5px so that the window spacing will adjust to
font size changes.
- When debug_server is built to use the graphical debugger as its
crash handler, also present the option to save a report instead
of debugging the app. Doesn't work 100% correctly yet though since
the report generator needs to wait for stack traces to be generated
if they aren't yet ready.
- When invoked, starts up the CLI such that it bypasses waiting for
input and instead save a crash report of the running team, then exits.
Mainly intended to be used by debug_server.
It has no use, since we don't know its value and the list of colors
might be longer (for example, for ARM currently B_MAX_CPU_COUNT is
only 1). The modula operator later on makes sure we keep within the
bounds of the kColors array anyway.
- The Tools menu now contains an option to save a debug report for the currently
debugged team. For now this report contains the following:
A list of all loaded images, their base address and their size.
A list of all threads active in their team, and their state.
* For each thread that is in a debug or exception state,
a stack trace, and a register dump at the top frame will also be emitted.
Feedback on report format + included details welcome.
For now, when the option is requested, the report is saved to the desktop
with an auto-generated name based on the target team and the current
date/time.
* move template method implementations out of class body, as otherwise
gcc2 bails with internal compiler error - thanks to Christof Lutteroth
for reporting