History log of /haiku/src/servers/debug/DebugServer.cpp
Revision Date Author Comments
# 36fa4b7e 06-Jun-2021 X512 <danger_mail@list.ru>

debug_server: improve stack trace

Change-Id: I94fc9e9e547f0191484cad8e7dc6e8b233b981db
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4299
Reviewed-by: David Karoly <karolyd577@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 515d86da 17-May-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

debug_server: build a new debug window

Use radio buttons laid out vertically so that locales with long labels
(no short word for "write core file") can still look nice. This is open
for experiment, buttons laid out vertically are another option. At least
now we have a window t work from, as BAlert doesn't cut it here.

While I'm at it, use a ladybug icon for this one, so it's visibly
different from normal application alerts.

Change-Id: I08ba9573f132901484224e107404348e7dca97f4
Reviewed-on: https://review.haiku-os.org/c/1459
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 33fc4f40 03-May-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert "debug_server: Remove the "Write core file" button."

This reverts commit 02079c66f3cff4cced9df077650aec79696aee6f.

Change-Id: I95a4bbef67e2a982da49a18105a4cbd85c4e11e9
Reviewed-on: https://review.haiku-os.org/c/1457
Reviewed-by: Rene Gollent <rene@gollent.com>


# 02079c66 02-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

debug_server: Remove the "Write core file" button.

It is very, very rarely used, and is extremely wide on some locales
(i.e. almost 2x the width of the other buttons combined), making it
appear out of place. Now that it can be done from Debugger, having
it here does not seem to make a lot of sense.

As requested and discussed in #14777.


# 6dc2384f 24-Apr-2016 Ingo Weinhold <ingo_weinhold@gmx.de>

debug server: Offer option to write a core file

... when a team crashes/hits a debug event.


# bea38cb7 11-May-2015 Axel Dörfler <axeld@pinc-software.de>

registrar: implemented auth port via launch_daemon.

* get_roster_port_name() is no longer needed.
* This also removes the app_server restart code from the debug
server -- this will be done by the launch_daemon in the future.


# cf629b09 26-Dec-2014 Rene Gollent <rene@gollent.com>

debug_server: Fix #11659.

- If we're asked to debug a team graphically, check if Debugger is already
running. If so, send it a message asking it to debug the team rather than
trying to invoke it by command line, as the latter will simply result in
a B_SILENT_RELAUNCH message, and won't actually process the request properly.


# afd7ded0 20-Nov-2014 Adrien Destugues <pulkomandy@gmail.com>

Debug Server: kill team when debug alert is escaped

B_CLOSE_ON_ESCAPE makes alert->Go return -1. Handle this correctly and
kill the team.

Fixes #9983.


# 3aeed660 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 44d352cd 18-Dec-2013 Murai Takashi <tmurai01@gmail.com>

Fix DebugServer build with GCC4.8

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 1b744548 15-Dec-2013 Rene Gollent <rene@gollent.com>

debug_server: Add default action support.

- debug_server now supports user configuration of both the general default
action to be taken on crashes, and per-app overrides. These are stored
config/settings/system/debug_server/settings. In the absence of the file,
behavior defaults to prompting the user for an action as before.

The file takes on a driver_settings style format as follows:

---
default_action user

executable_actions {
app1 log
/path/app2* debug
}
---

Valid values for an action are:
- user = prompt user for action.
- kill = silently terminate the crashing team.
- debug = attach the debugger to the crashing team. in the debugger.
- log / report = save a crash report and terminate the team.

If no default_action is specified, "user" is assumed.

The executable_actions subsection contains individual overrides of the
default. These take the form above, where the individual lines can be
only a team name, or a path, with wildcards.

Implements first part of #10301.


# 196ab88d 30-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Extend debug_create_symbol_lookup_context().

- debug_create_symbol_lookup_context() now takes an image ID
parameter that can optionally be used to restrict the symbols
it gathers to only those of the targeted image rather than the
entire team, allowing for significantly more lightweight usage
when the desired image is known. The previous behavior can still
be obtained if desired by passing -1 as said ID.

- Adjust callers.


# c6cd8df7 26-Dec-2012 Humdinger <humdingerb@gmail.com>

Correct case in GUI string.


# bbdb6052 18-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Switch over to using Debugger as the primary system debugger.

- When a crash occurs that requires using consoled, use Debugger
in CLI mode.

- Closes #1078.


# 4e156d9a 23-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Allow saving a crash report from debug_server.

- 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.


# f3e4f18b 09-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Debugging fixes.

* INT3 had the wrong DPL set in the IDT, could not be raised from
userland.
* Need the debug server running.


# aed35104 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# 6e2f6d1a 29-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

Changed cookie type for get_next_area_info() to ssize_t.

The cookie is used to store the base address of the area that was just
visited. On 64-bit systems, int32 is not sufficient. Therefore, changed
to ssize_t which retains compatibility on x86 while expanding to a
sufficient size on x86_64.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 04209cdd 21-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Catch a app_server crash in the debug server. Let the registrar restart the app_server and notify all apps.


# 9dd2d63b 06-Dec-2011 Rene Gollent <anevilyak@gmail.com>

- We now build up the argument list in a BStringList and map argv to those.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.

- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.


# c0954dc6 06-Dec-2011 Rene Gollent <anevilyak@gmail.com>

- We now build up the argument list in a BStringList and map argv to those.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.

- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.


# 323b6546 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# 8215661b 29-Oct-2011 François Revol <revol@free.fr>

Apply patch by 'mt' from ticket #7622 to localize the debug_server alert. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9918b716 17-Jul-2011 Rene Gollent <anevilyak@gmail.com>

- Factor out setting up the arguments for gdb handover.
- When using the graphical debugger by default, fall back
to setting up gdb handover if the GUI is unavailable.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42446 a95241bf-73f2-0310-859d-f6bbb57e9c96


# de6f745c 17-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add support for conditionally compiling the debug_server to hand off crashed
teams to the native debugger instead. This assumes the latter is installed
in /boot/system/apps.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42445 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dfd9cb9 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# a608485f 14-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Added new team flag B_TEAM_DEBUG_PREVENT_EXIT that prevents teams from exiting
via exit() (the calling thread will drop into the debugger instead).
* The DebugServer now uses this flag by default.
* Added TODO comment: the default debugger should already be able to set a flag
like this in order to close a race condition between dropping a thread into
the debugger and setting the flag.
* Cleaned up the debug_server sources a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36265 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f379156 11-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* debug_create_symbol_lookup_context() gets a team ID instead of a
debug context now. That's all it needs.
* Added the option "-a" to the profile command line tool. It triggers profiling
of the whole system. There are still some issues, particularly image related
ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30129 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 317bd7dd 03-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
update them yet, as we'll probably do so anyway at some point. Also, I think
we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb5d7021 23-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

TeamDebugHandler::_HandlerThread(): Remove and delete the team handler in any
case, not only when we kill the team, i.e. also when the team just died or we
handed it over to another debugger. We can do this, since it is also safe to
assume that we won't get any further debug messages from the team after a
B_DEBUGGER_MESSAGE_TEAM_DELETED or B_DEBUGGER_MESSAGE_HANDED_OVER. We were
leaking (well, keeping) the team handler in those cases, which was a problem
in the latter one, since we silently ate all debug messages for the team in
case it would be re-attached later. Fixes bug #2942.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 28ff3e2c 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* the name of an image is actually B_PATH_NAME_LENGTH long


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0644c0e3 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* actually print the image name if a symbol name could not be found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7301a7fb 13-Nov-2007 Axel Dörfler <axeld@pinc-software.de>

bonefish+axeld:
* The debug_server now sends the registrar messages whenever the debug alert
is shown, and also, if the user wants to debug the team.
* In the latter case, the registrar will now cancel a shutdown process.
* Also, it will now wait with the shutdown process until the user has
acknowledged the debugger alert.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac7fc18b 12-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Always allow debugging a team, even if it wasn't possible to get its
executable path. It seems, gdb doesn't produce very helpful stack traces
then, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21915 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 38979f27 16-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* All "GUI servers" (app server, input server, and registrar) will now be
debugged automatically in a consoled session, when they crash. Note,
that after a recoverable error (like a debugger() call) one can
"detach" the debugged team in gdb, "quit", and continue as if
nothing happened. 8-O
* The input server will no longer be killed when starting the debugger
in a consoled session. Not sure why it was done; it simply works as it
is now.
* Replaced all printf()s and fprintf()s by debug_printf() or TRACE(()).
The debug server prints little enough anyway. In fact only when something
crashes or an unexpected error occurs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a93edb6 22-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Made all server version and signatures consistent, and thus closing bug #909.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19092 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b4fbcf3 28-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Now dumps a message to the serial debug output in case a GUI server died; if the
registrar or the input_server died, you didn't get any notification before.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82584ab9 09-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
use kWindowScreenFeel - it will set its window to full screen as long
as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
method. This class is now also used in the new BRoster::_ApplicationCrashed()
method as used in the debug_server (via BRoster::Private).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17785 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 696e7270 03-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

The debug_server now uses the standard terminal for debugging - we no longer
need MiniTerminal, it's no longer included in the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15822 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e2218e5 21-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Provide a useful window title for the debug terminal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13798 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a323d35 16-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for looking up symbols of other team to libdebug. The
debug_server uses this feature to print stack traces with symbols.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13698 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c9ce15c9 14-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Reworked the design: It certainly doesn't make sense to display more than
one alert, when two threads of a team crash. Now we have a per team queue
of debug messages and a thread per team that processes them (that is
usually only the first one). The application class does nothing anymore.
* Implemented debugger handover:
- In case of normal apps, when the relevant servers needed for GUI are
running, we show an alert and, if requested, start a MiniTerminal with
gdb for the crashed team. I couldn't really test it, since alerts don't
seem to work, respectively crash the app server (usually both ;-).
- In case the app server crashes, we always start a consoled with gdb.
This does indeed seem to work.
A gdb attached to a team is not really useful yet, since the shared object
relocations seem to be incorrect, so "bt" is not giving any useful info.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13684 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 11a2999d 29-May-2005 Axel Dörfler <axeld@pinc-software.de>

Now also prints the area offsets next to the instruction pointer so you don't have
to enable debug output in the runtime linker and still have to compute the offsets
manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12900 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b2c1ecd6 28-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added patch originally written by Ingo Weinhold:
- extended libdebug.so functionality to be able to get stack frames,
current instruction pointer, etc.
- changed the debug_server to be able to run as a simple BLooper - this
saves some trouble when the app_server dies
- the debug_server now prints out a stack crawl for the crashed team
(without symbols, though - for that data to be helpful you should
have a look at the loaded images (ie. where they start))
- the debug_server now also prints the team name when it kills it


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12882 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 362e09b1 20-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

In case of a debugger() call now also prints the debug message. Makes use of the new libdebug.so.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# edc47dd5 13-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

The debugger interface has changed a bit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11716 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3b4050 12-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Adjustions due to changes in the debugger interface
(there's a separate B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 35e49f25 25-Feb-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial version of our debug server. This is the guy that hangs around
waiting for teams to crash to show our favorite alert.
Due to the missing app_server we don't show a alert yet. We just print
something to /dev/dprintf and kill the team. Unlike R5's debug server
ours will probably not provide any debugging functionality itself, but
rather employ gdb directly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11492 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bea38cb711f29e929d62ceed9a0684e43c548a0d 11-May-2015 Axel Dörfler <axeld@pinc-software.de>

registrar: implemented auth port via launch_daemon.

* get_roster_port_name() is no longer needed.
* This also removes the app_server restart code from the debug
server -- this will be done by the launch_daemon in the future.


# cf629b09f9a9f0812b798a62479792e2156ec495 26-Dec-2014 Rene Gollent <rene@gollent.com>

debug_server: Fix #11659.

- If we're asked to debug a team graphically, check if Debugger is already
running. If so, send it a message asking it to debug the team rather than
trying to invoke it by command line, as the latter will simply result in
a B_SILENT_RELAUNCH message, and won't actually process the request properly.


# afd7ded01e67ac3ff5b92a274dbeee40ed51a3bc 20-Nov-2014 Adrien Destugues <pulkomandy@gmail.com>

Debug Server: kill team when debug alert is escaped

B_CLOSE_ON_ESCAPE makes alert->Go return -1. Handle this correctly and
kill the team.

Fixes #9983.


# 3aeed6607cd07762c0e709633c012b3a632dbad9 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 44d352cdb1a18481b711112f4bac6386414d5ac8 18-Dec-2013 Murai Takashi <tmurai01@gmail.com>

Fix DebugServer build with GCC4.8

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 1b744548e0a31d725a147cfeadf3eeb30a4eb84c 15-Dec-2013 Rene Gollent <rene@gollent.com>

debug_server: Add default action support.

- debug_server now supports user configuration of both the general default
action to be taken on crashes, and per-app overrides. These are stored
config/settings/system/debug_server/settings. In the absence of the file,
behavior defaults to prompting the user for an action as before.

The file takes on a driver_settings style format as follows:

---
default_action user

executable_actions {
app1 log
/path/app2* debug
}
---

Valid values for an action are:
- user = prompt user for action.
- kill = silently terminate the crashing team.
- debug = attach the debugger to the crashing team. in the debugger.
- log / report = save a crash report and terminate the team.

If no default_action is specified, "user" is assumed.

The executable_actions subsection contains individual overrides of the
default. These take the form above, where the individual lines can be
only a team name, or a path, with wildcards.

Implements first part of #10301.


# 196ab88d06ca479b6d6ab2ab974c1dd0c899a088 30-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Extend debug_create_symbol_lookup_context().

- debug_create_symbol_lookup_context() now takes an image ID
parameter that can optionally be used to restrict the symbols
it gathers to only those of the targeted image rather than the
entire team, allowing for significantly more lightweight usage
when the desired image is known. The previous behavior can still
be obtained if desired by passing -1 as said ID.

- Adjust callers.


# c6cd8df773708b79709cb0b6f32e715a44cfa8d8 26-Dec-2012 Humdinger <humdingerb@gmail.com>

Correct case in GUI string.


# bbdb6052247f0893e1d9102dd2009f10bfa100ea 18-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Switch over to using Debugger as the primary system debugger.

- When a crash occurs that requires using consoled, use Debugger
in CLI mode.

- Closes #1078.


# 4e156d9a789fe4d0ab203c6e563abf4d9ec16299 23-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Allow saving a crash report from debug_server.

- 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.


# f3e4f18be78e46d70a1883f750265a03f4fe0574 09-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Debugging fixes.

* INT3 had the wrong DPL set in the IDT, could not be raised from
userland.
* Need the debug server running.


# aed35104852941f0f6f3d1dcc5338b5f337d0a3c 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# 6e2f6d1ace7490a200dcff70c52acf2af59c5bc3 29-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

Changed cookie type for get_next_area_info() to ssize_t.

The cookie is used to store the base address of the area that was just
visited. On 64-bit systems, int32 is not sufficient. Therefore, changed
to ssize_t which retains compatibility on x86 while expanding to a
sufficient size on x86_64.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 04209cdd81e0cc978a5da7a9c9a5175e11b4140c 21-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Catch a app_server crash in the debug server. Let the registrar restart the app_server and notify all apps.


# 9dd2d63b15ad1aac2ad28cf37eb4bde036452e48 06-Dec-2011 Rene Gollent <anevilyak@gmail.com>

- We now build up the argument list in a BStringList and map argv to those.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.

- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.


# c0954dc66186425eefeece8ce6a2c3b2720c6752 06-Dec-2011 Rene Gollent <anevilyak@gmail.com>

- We now build up the argument list in a BStringList and map argv to those.
The previous solution had various issues where argv pointed to stack-based
objects that had potentially been destroyed/overwritten already. Fixes
#8173.

- Modify _SetupGDBArguments() to return an error code and check for it
accordingly.


# 323b65468e5836bb27a5e373b14027d902349437 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# 8215661bb2811fb6166433a87fd09123e88ea2b3 29-Oct-2011 François Revol <revol@free.fr>

Apply patch by 'mt' from ticket #7622 to localize the debug_server alert. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9918b71672f5f48606b74f6cf76190a83778a80e 17-Jul-2011 Rene Gollent <anevilyak@gmail.com>

- Factor out setting up the arguments for gdb handover.
- When using the graphical debugger by default, fall back
to setting up gdb handover if the GUI is unavailable.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42446 a95241bf-73f2-0310-859d-f6bbb57e9c96


# de6f745cdefd87ef157fd4e58d7a413a735ec905 17-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add support for conditionally compiling the debug_server to hand off crashed
teams to the native debugger instead. This assumes the latter is installed
in /boot/system/apps.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42445 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dfd9cb95ce45f59160d50975210bc55e3fc0709 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# a608485f26d1e806f7e4d595a8a6eeafad36bd43 14-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Added new team flag B_TEAM_DEBUG_PREVENT_EXIT that prevents teams from exiting
via exit() (the calling thread will drop into the debugger instead).
* The DebugServer now uses this flag by default.
* Added TODO comment: the default debugger should already be able to set a flag
like this in order to close a race condition between dropping a thread into
the debugger and setting the flag.
* Cleaned up the debug_server sources a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36265 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f3791568750bf18150d932c1e5fba2a215b9344 11-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* debug_create_symbol_lookup_context() gets a team ID instead of a
debug context now. That's all it needs.
* Added the option "-a" to the profile command line tool. It triggers profiling
of the whole system. There are still some issues, particularly image related
ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30129 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 317bd7dda3eb26d4d24ba5b0a831461119f70d34 03-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
update them yet, as we'll probably do so anyway at some point. Also, I think
we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb5d70219046d178adfbe3d2ff65c89d3e4c5ad4 23-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

TeamDebugHandler::_HandlerThread(): Remove and delete the team handler in any
case, not only when we kill the team, i.e. also when the team just died or we
handed it over to another debugger. We can do this, since it is also safe to
assume that we won't get any further debug messages from the team after a
B_DEBUGGER_MESSAGE_TEAM_DELETED or B_DEBUGGER_MESSAGE_HANDED_OVER. We were
leaking (well, keeping) the team handler in those cases, which was a problem
in the latter one, since we silently ate all debug messages for the team in
case it would be re-attached later. Fixes bug #2942.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 28ff3e2c9a44f8e06a5191a5825c13789ed49a2f 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* the name of an image is actually B_PATH_NAME_LENGTH long


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0644c0e33318d977541bbd56bfbe726ffc49f656 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* actually print the image name if a symbol name could not be found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7301a7fbdbd860cf12024a0274ba9fd440ae8c5b 13-Nov-2007 Axel Dörfler <axeld@pinc-software.de>

bonefish+axeld:
* The debug_server now sends the registrar messages whenever the debug alert
is shown, and also, if the user wants to debug the team.
* In the latter case, the registrar will now cancel a shutdown process.
* Also, it will now wait with the shutdown process until the user has
acknowledged the debugger alert.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac7fc18b0973783319381299aa30a5bb23a1db68 12-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Always allow debugging a team, even if it wasn't possible to get its
executable path. It seems, gdb doesn't produce very helpful stack traces
then, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21915 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 38979f27b05b2d64491213b9218453a4fce09350 16-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* All "GUI servers" (app server, input server, and registrar) will now be
debugged automatically in a consoled session, when they crash. Note,
that after a recoverable error (like a debugger() call) one can
"detach" the debugged team in gdb, "quit", and continue as if
nothing happened. 8-O
* The input server will no longer be killed when starting the debugger
in a consoled session. Not sure why it was done; it simply works as it
is now.
* Replaced all printf()s and fprintf()s by debug_printf() or TRACE(()).
The debug server prints little enough anyway. In fact only when something
crashes or an unexpected error occurs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a93edb60c9297f3dce0e63465830567dcc4a5da 22-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Made all server version and signatures consistent, and thus closing bug #909.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19092 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b4fbcf3add88d945d975995be0ab41447d3aa8c 28-Sep-2006 Axel Dörfler <axeld@pinc-software.de>

* Now dumps a message to the serial debug output in case a GUI server died; if the
registrar or the input_server died, you didn't get any notification before.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82584ab9c2996ff4dec740d64eb78c7c0b74c900 09-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
use kWindowScreenFeel - it will set its window to full screen as long
as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
method. This class is now also used in the new BRoster::_ApplicationCrashed()
method as used in the debug_server (via BRoster::Private).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17785 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 696e72709e6d98fbbac0b9d4586721585fca758a 03-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

The debug_server now uses the standard terminal for debugging - we no longer
need MiniTerminal, it's no longer included in the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15822 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e05fe1042cce6e00d194a147802d4f9be 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0e2218e5b9d13fef31bc9b988ed93c5368384914 21-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Provide a useful window title for the debug terminal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13798 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a323d3533ed56555d16790d139f139e35b82a1f 16-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for looking up symbols of other team to libdebug. The
debug_server uses this feature to print stack traces with symbols.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13698 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c9ce15c94a19b9cb1b0a8c4e9f3fde589bc42cf6 14-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Reworked the design: It certainly doesn't make sense to display more than
one alert, when two threads of a team crash. Now we have a per team queue
of debug messages and a thread per team that processes them (that is
usually only the first one). The application class does nothing anymore.
* Implemented debugger handover:
- In case of normal apps, when the relevant servers needed for GUI are
running, we show an alert and, if requested, start a MiniTerminal with
gdb for the crashed team. I couldn't really test it, since alerts don't
seem to work, respectively crash the app server (usually both ;-).
- In case the app server crashes, we always start a consoled with gdb.
This does indeed seem to work.
A gdb attached to a team is not really useful yet, since the shared object
relocations seem to be incorrect, so "bt" is not giving any useful info.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13684 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 11a2999d10a017770c173e899fe16b50a079d8b0 29-May-2005 Axel Dörfler <axeld@pinc-software.de>

Now also prints the area offsets next to the instruction pointer so you don't have
to enable debug output in the runtime linker and still have to compute the offsets
manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12900 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b2c1ecd640f14d0e85fefac0044dbf30ab142318 28-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added patch originally written by Ingo Weinhold:
- extended libdebug.so functionality to be able to get stack frames,
current instruction pointer, etc.
- changed the debug_server to be able to run as a simple BLooper - this
saves some trouble when the app_server dies
- the debug_server now prints out a stack crawl for the crashed team
(without symbols, though - for that data to be helpful you should
have a look at the loaded images (ie. where they start))
- the debug_server now also prints the team name when it kills it


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12882 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 362e09b1247897f6d6956b6a6dfc0759b8b45d5a 20-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

In case of a debugger() call now also prints the debug message. Makes use of the new libdebug.so.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# edc47dd5844092b02cd65c7f3529c2d861f9871b 13-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

The debugger interface has changed a bit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11716 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3b405008be5a9c1a7c2f29ab931b1414028a73 12-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Adjustions due to changes in the debugger interface
(there's a separate B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 35e49f2582eed6a36620f79de55d4c9f3bfe3a30 25-Feb-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial version of our debug server. This is the guy that hangs around
waiting for teams to crash to show our favorite alert.
Due to the missing app_server we don't show a alert yet. We just print
something to /dev/dprintf and kill the team. Unlike R5's debug server
ours will probably not provide any debugging functionality itself, but
rather employ gdb directly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11492 a95241bf-73f2-0310-859d-f6bbb57e9c96