History log of /haiku/src/apps/debugger/Debugger.cpp
Revision Date Author Comments
# eb4d2229 28-Oct-2023 Augustin Cavalier <waddlesplash@gmail.com>

Debugger: Select "local" interface if none specified in MSG_DEBUG_THIS_TEAM.

The debug_server sends MSG_DEBUG_THIS_TEAM but of course it doesn't
have a way to specify the internal interface pointer. We should thus
assume the local one is implied.

Fixes #18645, which is not a regression but has been the case since
the initial host-interface refactors years ago, apparently.

Change-Id: I48078232f154f2f8f7cdf28792d39ae58471ce19
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7074
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# d8eeb8a4 05-Apr-2023 Zardshard <0azrune6@zard.anonaddy.com>

Debugger: explain target must be specified for CLI debugger

Previous behaviour was to exit without any explanation.

Change-Id: I3350a139fadffb197c7833f3c46861a401f86271
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6306
Reviewed-by: Rene Gollent <rene@gollent.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Automation <automation@haiku-os.org>


# c0a43216 03-Apr-2023 Zardshard <0azrune6@zard.anonaddy.com>

Debugger: add support for executable file refs

Adds support for handling executable files in the
Debugger::RefsReceived function.

This change
* makes Deskbar menu->Recent Applications->Debugger->A recently opened
executable open the executable instead of simply opening the
Teams window, and
* allows dragging and dropping an executable onto the application's
icon.

Change-Id: I8e70e7929188301ce976f1f14e885236d3cb2b0a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6299
Reviewed-by: Rene Gollent <rene@gollent.com>
Tested-by: Automation <automation@haiku-os.org>


# aa7f93c5 24-Jan-2019 Rob Gill <rrobgill@protonmail.com>

src/apps Code formatting

* No functional changes

code formatting changes only

Change-Id: I046ae21d9b288126022fe0bc2ddf827843765e70
Reviewed-on: https://review.haiku-os.org/c/896
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# c0936b5a 11-Jan-2018 Rene Gollent <rene@gollent.com>

Debugger: Another set of #13800 fixes.

AbstractTable/Table/TreeTable:
- Let BColumnListView take care of deleting columns. The previous
approach was resulting in the columns being leaked.

Debugger:
- Don't detach the UI reference, as TeamDebugger will acquire its own.

GraphicalUserInterface:
- Cleanup of file panel handler.

SourceView:
- Clean up marker manager.

*Roster:
- Clean up registered objects in destructors.

GlobalTypeLookup:
- Clean up hash tables.

NetworkTargetHostInterfaceInfo:
- Fix reference handling for settings.


# 7e6e3c1b 05-Dec-2016 Rene Gollent <rene@gollent.com>

Debugger: Implement use of connection config roster.

Debugger:
- Initialize/Deinitialize roster as appropriate.

ConnectionConfigWindow:
- Implement config view listener interface, and use roster
to retrieve and add appropriate config view when switching
between interface types.


# 445f0037 01-Dec-2016 Rene Gollent <rene@gollent.com>

Debugger: Implement spawning connection window.

TeamsWindow:
- Create new connection button now sends a message to the main app,
which manages the connection window as a singleton.

Debugger:
- Handle creating/showing connection configuration window as requested.


# c4b21918 01-Dec-2016 Rene Gollent <rene@gollent.com>

Debugger: Fix incorrect indentation.


# 10ba3348 30-Nov-2016 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

- Split MessageCodes.h into a second file that separates out the
application-specific message codes from those used by the core.
Adjust includes accordingly. No functional change.


# fce4895d 29-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Split into core library and application.

- Add subfolder src/kits/debugger which contains the debugger's core
functionality and lower layers. Correspondingly add headers/private/debugger
for shared headers to be used by clients such as the Debugger application
and eventual remote_debug_server. Adjust various files to account for
differences as a result of the split and moves.
- Add libdebugger.so to minimal Jamfile.


# e6687e8f 28-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Add dedicated functions for global {un}init.

- Add new source file DebuggerGlobals, which contains the relevant
functions for initializing/destroying the various singleton rosters
that the core subsystems rely upon. It is the app's responsibility
to ensure these are called before anything else, and as final cleanup
at exit.
- The GUI/CLI app objects now take care of initializing the settings factory
and ValueHandlerRoster, as those are entirely app-specific.
- Refactor calls to init functions appropriately.


# 5c8ba745 25-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Refactor SettingsManager.

- SettingsManager is now a pure virtual interface. The debugger core provides
a no-op implementation of it which is used by default if no explicit manager
is provided by the client requesting a new TeamDebugger. This allows consumers
of the debugger core that have no need for settings persistence such as the
report generator to not have to care about that particular detail at all.
- Add subclass DebuggerSettingsManager which is essentially the previous
existing implementation. This one will go with the application portion
of the Debugger once the separation of app and lib has been completed.
Adjust callers accordingly.


# ec60909a 22-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Reorganize settings classes.

- Refactor TeamUiSettingsFactory into an abstract base class with implementing
subclass DebuggerUiSettingsFactory.
- Adjust SettingsManager to expect the UiSettingsFactory to be passed in as an
initialization parameter, and refactor accordingly.
- Move GuiTeamUiSettings.* into a user_interface/gui subfolder.

No functional change, simply reorganization towards splitting the debugger's
core functionality into a separate library from the application to aid in
sharing with remote_debug_server.


# 880a6464 18-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

TargetHostInterface:
- Adjust _StartTeamDebugger to always require a user interface object to
be passed in rather than implicitly falling back to GUI if unspecified.

Debugger:
- Refactor to be in compliance with the above.


# 5c8966c7 26-Apr-2016 Rene Gollent <rene@gollent.com>

Debugger: Fix crash regression.

- During the TargetHostInterface refactoring, a parameter was accidentally
omitted for the debugger options in the command line and report interfaces,
leading to a crash during TeamDebugger init.


# 63a0065c 26-Apr-2016 Rene Gollent <rene@gollent.com>

Debugger: Implement part of #12729.

TeamsWindow:
- Add a button allowing one to specify loading a core file in addition
to attaching to/creating teams.
- Slight layout tweak.


# 6d5951d6 26-Apr-2016 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Handle RefsReceived(), opening core files


# 2c4195e8 24-Apr-2016 Rene Gollent <rene@gollent.com>

Debugger: Integrate core handling into TargetHostInterface.

{Local}TargetHostInterface:
- Add virtual method for requesting a debugger interface for a core file.
Implement accordingly in LocalTargetHostInterface based on Ingo's
previous implementation in the Debugger app.

TeamDebuggerOptions:
- Add an enum to define the type of team debugger request being made
to explicitly make this clear rather than guessing based on the provided
arguments. Set accordingly in the various cases.
- Add a parameter for the core file path.

Debugger:
- Refactor to fill in TeamDebuggerOptions appropriately for core file
requests, and consequently simplify code.

This doesn't yet deal with the fact that a post-mortem team's ID can
clash with that of a live team, which may lead to issues when attempting
to attach to a live team in such a case.


# 1a899ed4 24-Apr-2016 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Beginning of core file support

* DebuggerInterface: Add method IsPostMortem() to be able to
descriminate between live and post mortem debugging.
* Add DebuggerInterface implementation CoreFileDebuggerInterface which
provides information from a core file.
* TeamDebugger: Don't start the debug event thread when debugging post
mortem.
* Debugger: New command line variant "Debugger --core <file path>",
which starts a team debugger using the core file.

There are a few issues:
* I didn't see an easy way to integrate with the new
TargetHostInterface framework and I didn't want to get into Rene's
way changing stuff. As a side effect core file debug windows are not
counted and Debugger will quit when only those are left, respectively
will additionally open a teams window on start-up.
* There aren't any symbols yet. We can't use the debug kit
functionality, since it isn't bitness/endianess agnostic. So either
it needs to be adjusted or ported over to Debugger.


# aed5c39d 20-Apr-2016 Rene Gollent <rene@gollent.com>

Debugger: Implement host interface roster listener.

TargetHostInterfaceRoster:
- Add Listener interface. For now, this simply notifies the listener of
changes to the active debugger count.
- Adjust show new team window command to automatically fall back to the local
interface window if one isn't specified. Fixes the Start New Team menu item
in the TeamWindow. The latter will later be expanded to show the available
interfaces to start a new team on in a submenu.

Debugger:
- Implement roster listener interface in order to know when to attempt
application quit.

With this commit, all necessary work to isolate the application from the target
host is complete, and work on the actual remote interface and protocol can
begin.


# a1afac4d 20-Apr-2016 Rene Gollent <rene@gollent.com>

Debugger: Rework to fully use TargetHostInterface.

Application objects:
- Rework and simplify to take into account that they will no longer be
directly managing the team debugger list. Requests to start a new debugger
are still funnelled through here however, and as such, said requests must
now provide the appropriate target host to start with. Adjust StartTeamWindow
and TeamsWindow accordingly.
- On global init, always create an instance of the local interface.

TargetHostInterface:
- Convert to BLooper and implement TeamDebugger's Listener interface.
TargetHostInterfaces now directly manage their TeamDebugger instances,
and consequently take over the equivalent duties that the main application
previously had.
- Adjust signatures of Attach/CreateTeam to add const. Adjust
LocalTargetHostInterface accordingly.
- Add accessor to determine if a given interface is local or not. Will be
needed for the TeamDebugger's file manager eventually so it knows if it
needs to request remote files if no matching local file is found.
- Add accessor to start a TeamDebugger instance, and corresponding options
structure.

TargetHostInterfaceRoster:
- Minor adjustments to host interface initialization to take into account
needing to start the looper.
- Add accessor for number of running team debuggers, for the main app to
use when deciding to quit.

TeamDebugger:
- Add accessor for SettingsManager. Needed for the case of a restart request,
as the host interfaces do not have direct access to it.

TeamsWindow:
- For now, always grab the local host interface when initializing the window.
Once the remote interface is implemented, this will need to be adjusted, but
the appropriate UI for creating/selecting it is needed first anyways.

With these changes, the main application is fully host-agnostic, and all
management of actual debuggers is delegated to their parent host interfaces.
There still needs to be a listener interface for the host interface and/or
roster though, so that the application can be made aware of when debuggers
quit, as this drives whether it's time to terminate the app or not.


# 2e705811 29-Mar-2016 Rene Gollent <rene@gollent.com>

Debugger: DebuggerInterface refactor.

DebuggerInterface:
- Refactor into abstract base class.
- Introduce interface configuration abstract base class.
- Move existing implementation into LocalDebuggerInterface and add
corresponding configuration class.

Debugger:
- Adjust to instantiate LocalDebuggerInterface.

In and of itself no functional change, but paves the way for further
refactoring to make the debugger fully interface-agnostic (this isn't yet
the case for retrieving target system information such as the team listing,
and creating/attaching to teams).


# 6bef41c6 29-Mar-2016 Rene Gollent <rene@gollent.com>

Debugger: Minor refactor.

TeamDebugger:
- Rather than instantiating the DebuggerInterface directly, we now
expect it to be given to us externally. This allows TeamDebugger
to be agnostic of where the team actually resides.

Debugger:
- Create and initialize DebuggerInterface before passing it on to
TeamDebugger.

No functional change.


# 2d9d01e2 21-Aug-2015 Rene Gollent <rene@gollent.com>

Debugger: Refactor non-interactive report handling.

- Add dedicated ReportDebugger application class for the case where we're
asked to do nothing more than save a report. Also add a corresponding
UserInterface subclass whose sole purpose is to take those necessary
actions and then exit.
- When the debugger is invoked via the --save-report option, we now start
via the aforementioned report/interface rather than piggybacking on the
CLI.
- Clean up CommandLineUserInterface/CliContext to remove handling for the
report saving option.

Should hopefully resolve #12155.


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

Debugger: Cleanups.

General:
- Move all smaller prompt/edit windows to a dedicated subfolder.

Debugger/TeamsWindow/StartTeamWindow:
- Move management of StartTeamWindow to application, rather than
Teams window.

TeamWindow:
- Add top level menu item for commands that aren't specific to the
current team. This currently consists of requesting that the
Teams window be shown, and directly starting a new team.

Fixes part of #11659 (no way to start additional teams if Debugger was
initially started with a specific team).


# 33151100 10-Jun-2014 Rene Gollent <rene@gollent.com>

Debugger: Start adding the groundwork for load state handlers.

Adds abstract class ImageDebugLoadingStateHandler which simply contains two
hooks, which allow one to a) ask it if it supports a handling a particular
type of loading state, and b) if so, ask it to attempt to handle that case,
given the passed in user interface object.

Also adds implementing subclass for DwarfImageDebugInfo, currently
intended primarily to handle the case of missing external debug information.
At present, this just supports prompting the user to find/install the file,
but eventually this will be extended to also support automatically installing
the corresponding debug information package, if applicable.

Finally, adds ImageDebugLoadingStateHandlerRoster, which acts as a front end
for matching up a given loading state with the appropriate handler.


# e8948527 07-Dec-2013 Rene Gollent <rene@gollent.com>

Debugger: Implement #10283.

- When constructing the CLI interface, also pass along the target thread ID
if one was specified.
- If our only reason for starting is to save a report, and we've been given
a specific thread to target, rather than just a team, ensure that the target
thread is in a stopped state prior to saving the report.


# 0c2d190d 16-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix incorrect handling when starting new teams.

When building the launch string for starting a new team via the GUI,
enclose the executable path in quotes to ensure paths with spaces are
handled properly.


# c90773b3 29-May-2013 Rene Gollent <anevilyak@gmail.com>

Implement support for restarting teams.

- TeamDebugger's listener interface now exports a
TeamDebuggerRestartRequested hook. The latter is used to request
starting a new debugger instance with the same arguments/settings as the
team it represented. Implemented for the graphical debugger.

- When a team terminates, the resulting dialog now allows the user to
choose to quit, restart, or simply do nothing. The latter option still
needs some work though, as e.g. setting additional breakpoints currently
fails since the corresponding debugger interface is no longer around.

Implements the main part of #9774.


# aad82273 03-May-2013 Rene Gollent <anevilyak@gmail.com>

Add message for starting a new team. Implements #9682.

- The Debugger app now accepts a message asking it to start a new team.
It attempts to do so given the path and arguments, and passes the
result back to the sender if desired.


# 6799de31 22-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add command line option to ask Debugger to save a report.

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


# 7483c98d 05-Aug-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger (and some friends): 64 bit fixes


# 726d557c 28-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger CLI: Wait for TeamDebugger thread to die before exit()


# f5847850 27-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: In CLI mode block SIGINT in all threads

It is supposed to be handled in the input loop thread only (eventually).


# 0a592099 21-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Rework CLI setup to no longer create a BApplication

The main thread does now serve the CLI input loop.


# 0f1f968f 20-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Actually create the CLI, if requested


# 08f7f574 03-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Factor out _StartTeamDebugger() so it can be shared between the GUI and
CLI initialization.



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


# 192c6f96 02-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add command line argument to specify usage of the CLI rather than the GUI.
Not used yet.


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


# c3e066cf 16-Dec-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced uses of obsolescent BReference[able] API.


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


# 30c47afa 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fix memory leak + style cleanup. Thanks Axel!


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


# 190108e9 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Add missing allocation checks where needed.


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


# db2c7eeb 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Style cleanup, no functional changes.


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


# 9135a7b8 21-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Removed left-over.


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


# ccb01bef 21-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Finally integrates running_teams_window stuff to the Debugger app:
* Rework Debugger class a bit to ease integration
* Expand TeamDebugger::Listener interface to notify start event too.
* Former RunningTeamsWindow, now name TeamsWindow, is shown at start
if no team/program to launch is specified.
* Double-clicking a team item in this list starts a new Team debugger, or
reactivate the existing one if any

This window settings is not yet integrated with the SettingsManager.
Will comes next.
I plan to add some UI controls to this Teams window to allow user to setup
a program arguments and environment variables and then launch & debug it.



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


# 59ea286f 05-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* EnumerationValue -> EnumeratorValue
* Since some types don't have names (e.g. pointer types or anonymous structs or
unions), each type does now also have a unique ID. The global type cache
registers types by ID and by name (if they have one). This fixes clashes of
types with empty names.
* Completely refactored the code dealing with variable values. Formerly we had
Variable and TypeComponentPath to navigate to a component, mapped to a
BVariant representing the value. Now we have:
* Interface Value with various subclasses (BoolValue, IntegerValue, etc.) to
represent a value, with the flexibility for more esoteric values.
* A tree of ValueNode+ValueNodeChild objects to represent the components of a
variable. On top of each ValueNodeChild sits a ValueNode representing the
value of the component, potentially having ValueNodeChild children. This
should allow casting a component value, simply by replacing its ValueNode.
* Interface ValueHandler and various implementations for the different value
types. It is basically a factory for classes allowing to format/display a
value.
* ValueHandlerRoster -- a registry for ValueHandlers, finding the best one
for a given value.
* Interface TypeHandler and various implementions for the different type
kinds (primitive, compound, address, etc.). It is basically a factory for
ValueNodes for that type.
* TypeHandlerRoster -- a registry for TypeHandlers, finding the best one
for a given type.

That's still a bit work in progress. It introduces at least one regression:
The VariablesView doesn't save/restore its state anymore. Will take a while
until that is added back.



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


# e3a631c0 15-Oct-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Introduced interface UserInterface, which abstracts the user interface code.
* Added implementation GraphicalUserInterface for the current GUI.

TeamDebugger does no longer know about TeamWindow.



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


# 2bf55b39 23-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made FunctionID abstract. There are now two implementing subclasses,
SourceFunctionID (where we know the souce location of the function) and
ImageFunctionID (where we don't know the source location). Made the
classes archivable.
* Added support to find functions by ID.
* Improved user breakpoint handling. We can now "install" a breakpoint before we
even know the function instances in which to install it. Whenever image debug
information become available, breakpoints are installed in the concerned
function instances of the respective image.
* Always trigger loading image debug info as soon as we become aware of an
image.
* Implemented a settings management mechanism. ATM only the breakpoint
locations for debugged teams are persisted. This seriously improves the
debugging fun, though. :-)


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


# 719f89b0 23-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed the application quit mechanism. Due to the two levels of asynchronous
message sending the main thread exit()ed before the team debugger could process
its quit message. We're no longer taking the detour via Debugger when quitting
a window. The team debugger just quits and synchronously notifies the
application, which in turn waits until all team debugger threads have gone.


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


# e951f678 23-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved message code where it belongs.


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


# b9563a6f 22-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Added NOTE on how to handle QuitRequested in the application and why using
the base class version is fine for now.


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


# 04743aeb 22-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Filled up the quitting code path a bit. The TeamDebugger throws up an alert
asking what to do with the debugged team. Killing it is not yet implemented.
Then it notifies the application about the quit request. That in turn tears
down the TeamDebugger and if no other ones are left, it quits itself.


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


# 15f040e5 19-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some work towards getting stack traces:
* Added a virtual Architecture::CreateStackTrace() and added a basic
implementation in ArchitectureX86. Fleshed out StackTrace/StackFrame a bit
and added StackFrameX86. This needs to be organized differently, though, so
that we can get the maximum available information for each stack frame,
depending on what info is available for the respective function.
* Added job to get the stack trace for a thread.
* Added stack trace related handling in TeamDebugger. Reorganized the thread
state/CPU state/stack trace change handling a bit -- we're using a
Team::Listener now, and do things asynchronously.
* Added a StackTraceView to display the stack trace of the current thread. No
function name available yet, otherwise working fine.


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


# 94af2f42 17-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed some debug output.


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


# ac8b6713 16-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added bits and pieces to the model classes (Team, Thread, Image).
* Added beginnings of the team window. Currently only showing the thread list
(not updated yet).
* Added application startup code and argument parsing.


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


# 2d9d01e2e849737a184f83779311a04346a5be98 21-Aug-2015 Rene Gollent <rene@gollent.com>

Debugger: Refactor non-interactive report handling.

- Add dedicated ReportDebugger application class for the case where we're
asked to do nothing more than save a report. Also add a corresponding
UserInterface subclass whose sole purpose is to take those necessary
actions and then exit.
- When the debugger is invoked via the --save-report option, we now start
via the aforementioned report/interface rather than piggybacking on the
CLI.
- Clean up CommandLineUserInterface/CliContext to remove handling for the
report saving option.

Should hopefully resolve #12155.


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

Debugger: Cleanups.

General:
- Move all smaller prompt/edit windows to a dedicated subfolder.

Debugger/TeamsWindow/StartTeamWindow:
- Move management of StartTeamWindow to application, rather than
Teams window.

TeamWindow:
- Add top level menu item for commands that aren't specific to the
current team. This currently consists of requesting that the
Teams window be shown, and directly starting a new team.

Fixes part of #11659 (no way to start additional teams if Debugger was
initially started with a specific team).


# 331511009c7f769f4c4dad00c7a31e2d926e7731 10-Jun-2014 Rene Gollent <rene@gollent.com>

Debugger: Start adding the groundwork for load state handlers.

Adds abstract class ImageDebugLoadingStateHandler which simply contains two
hooks, which allow one to a) ask it if it supports a handling a particular
type of loading state, and b) if so, ask it to attempt to handle that case,
given the passed in user interface object.

Also adds implementing subclass for DwarfImageDebugInfo, currently
intended primarily to handle the case of missing external debug information.
At present, this just supports prompting the user to find/install the file,
but eventually this will be extended to also support automatically installing
the corresponding debug information package, if applicable.

Finally, adds ImageDebugLoadingStateHandlerRoster, which acts as a front end
for matching up a given loading state with the appropriate handler.


# e8948527c2f9b499848c0859fdc8534cf763e430 07-Dec-2013 Rene Gollent <rene@gollent.com>

Debugger: Implement #10283.

- When constructing the CLI interface, also pass along the target thread ID
if one was specified.
- If our only reason for starting is to save a report, and we've been given
a specific thread to target, rather than just a team, ensure that the target
thread is in a stopped state prior to saving the report.


# 0c2d190d67d12e412ff63e206fe861bd5b6f304a 16-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix incorrect handling when starting new teams.

When building the launch string for starting a new team via the GUI,
enclose the executable path in quotes to ensure paths with spaces are
handled properly.


# c90773b3ba2c62bbb45ebfc92db15274cdf8a8a9 29-May-2013 Rene Gollent <anevilyak@gmail.com>

Implement support for restarting teams.

- TeamDebugger's listener interface now exports a
TeamDebuggerRestartRequested hook. The latter is used to request
starting a new debugger instance with the same arguments/settings as the
team it represented. Implemented for the graphical debugger.

- When a team terminates, the resulting dialog now allows the user to
choose to quit, restart, or simply do nothing. The latter option still
needs some work though, as e.g. setting additional breakpoints currently
fails since the corresponding debugger interface is no longer around.

Implements the main part of #9774.


# aad822734d4078d8075cdc95e940eb23ce0e6a2a 03-May-2013 Rene Gollent <anevilyak@gmail.com>

Add message for starting a new team. Implements #9682.

- The Debugger app now accepts a message asking it to start a new team.
It attempts to do so given the path and arguments, and passes the
result back to the sender if desired.


# 6799de315e5b0bbd65d73435ac886315bcf706b3 22-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add command line option to ask Debugger to save a report.

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


# 7483c98dece8f3606fc5d3fd746c0544f7e4b6dd 05-Aug-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger (and some friends): 64 bit fixes


# 726d557c9e2cedcf3145146e3e054c4931c5cb1e 28-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger CLI: Wait for TeamDebugger thread to die before exit()


# f58478507cd4406bd5b2ddb415f4f6cb43456a86 27-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: In CLI mode block SIGINT in all threads

It is supposed to be handled in the input loop thread only (eventually).


# 0a592099a94eb3727053c0e2ca571398dff75701 21-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Rework CLI setup to no longer create a BApplication

The main thread does now serve the CLI input loop.


# 0f1f968ffb6f4b19193ccad1a4edae9e9a46ab19 20-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Actually create the CLI, if requested


# 08f7f5744ae01386f652a2f8caef6443c83dcc05 03-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Factor out _StartTeamDebugger() so it can be shared between the GUI and
CLI initialization.



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


# 192c6f9689da4808d8e768332872372df7dd7145 02-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add command line argument to specify usage of the CLI rather than the GUI.
Not used yet.


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


# c3e066cf6d35a86d29396d4e740f9811e506b66c 16-Dec-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced uses of obsolescent BReference[able] API.


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


# 30c47afa79f617945e74394c463e2eb5cc021950 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fix memory leak + style cleanup. Thanks Axel!


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


# 190108e9c901482dabfc9c88fb2f9e23cdb405e3 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Add missing allocation checks where needed.


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


# db2c7eeb49cf219569e7ff442187bab11805c82d 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Style cleanup, no functional changes.


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


# 9135a7b8f8b9272cac96d8ca5bc62bc0f2fccd7a 21-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Removed left-over.


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


# ccb01bef441eb4f8a951633d646dd545fe5f800c 21-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Finally integrates running_teams_window stuff to the Debugger app:
* Rework Debugger class a bit to ease integration
* Expand TeamDebugger::Listener interface to notify start event too.
* Former RunningTeamsWindow, now name TeamsWindow, is shown at start
if no team/program to launch is specified.
* Double-clicking a team item in this list starts a new Team debugger, or
reactivate the existing one if any

This window settings is not yet integrated with the SettingsManager.
Will comes next.
I plan to add some UI controls to this Teams window to allow user to setup
a program arguments and environment variables and then launch & debug it.



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


# 59ea286fac914a808edc6989becc77dadff10383 05-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* EnumerationValue -> EnumeratorValue
* Since some types don't have names (e.g. pointer types or anonymous structs or
unions), each type does now also have a unique ID. The global type cache
registers types by ID and by name (if they have one). This fixes clashes of
types with empty names.
* Completely refactored the code dealing with variable values. Formerly we had
Variable and TypeComponentPath to navigate to a component, mapped to a
BVariant representing the value. Now we have:
* Interface Value with various subclasses (BoolValue, IntegerValue, etc.) to
represent a value, with the flexibility for more esoteric values.
* A tree of ValueNode+ValueNodeChild objects to represent the components of a
variable. On top of each ValueNodeChild sits a ValueNode representing the
value of the component, potentially having ValueNodeChild children. This
should allow casting a component value, simply by replacing its ValueNode.
* Interface ValueHandler and various implementations for the different value
types. It is basically a factory for classes allowing to format/display a
value.
* ValueHandlerRoster -- a registry for ValueHandlers, finding the best one
for a given value.
* Interface TypeHandler and various implementions for the different type
kinds (primitive, compound, address, etc.). It is basically a factory for
ValueNodes for that type.
* TypeHandlerRoster -- a registry for TypeHandlers, finding the best one
for a given type.

That's still a bit work in progress. It introduces at least one regression:
The VariablesView doesn't save/restore its state anymore. Will take a while
until that is added back.



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


# e3a631c0b48d904a9502dabb157639539484da53 15-Oct-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Introduced interface UserInterface, which abstracts the user interface code.
* Added implementation GraphicalUserInterface for the current GUI.

TeamDebugger does no longer know about TeamWindow.



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


# 2bf55b39a5119e092a52d9e50da6efcb38393d54 23-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made FunctionID abstract. There are now two implementing subclasses,
SourceFunctionID (where we know the souce location of the function) and
ImageFunctionID (where we don't know the source location). Made the
classes archivable.
* Added support to find functions by ID.
* Improved user breakpoint handling. We can now "install" a breakpoint before we
even know the function instances in which to install it. Whenever image debug
information become available, breakpoints are installed in the concerned
function instances of the respective image.
* Always trigger loading image debug info as soon as we become aware of an
image.
* Implemented a settings management mechanism. ATM only the breakpoint
locations for debugged teams are persisted. This seriously improves the
debugging fun, though. :-)


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


# 719f89b06e70d04c8961b9b8fc24f1d368ecd621 23-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed the application quit mechanism. Due to the two levels of asynchronous
message sending the main thread exit()ed before the team debugger could process
its quit message. We're no longer taking the detour via Debugger when quitting
a window. The team debugger just quits and synchronously notifies the
application, which in turn waits until all team debugger threads have gone.


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


# e951f678c2850cfdbbe3bc56b040b468a8d45608 23-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved message code where it belongs.


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


# b9563a6fd991b5b63a808fccb7f90ef9cbdc0509 22-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Added NOTE on how to handle QuitRequested in the application and why using
the base class version is fine for now.


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


# 04743aeb5ff6eeb74afaf322a6d21c4f4939883b 22-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Filled up the quitting code path a bit. The TeamDebugger throws up an alert
asking what to do with the debugged team. Killing it is not yet implemented.
Then it notifies the application about the quit request. That in turn tears
down the TeamDebugger and if no other ones are left, it quits itself.


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


# 15f040e596308c36903c8381112ef04280b95963 19-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some work towards getting stack traces:
* Added a virtual Architecture::CreateStackTrace() and added a basic
implementation in ArchitectureX86. Fleshed out StackTrace/StackFrame a bit
and added StackFrameX86. This needs to be organized differently, though, so
that we can get the maximum available information for each stack frame,
depending on what info is available for the respective function.
* Added job to get the stack trace for a thread.
* Added stack trace related handling in TeamDebugger. Reorganized the thread
state/CPU state/stack trace change handling a bit -- we're using a
Team::Listener now, and do things asynchronously.
* Added a StackTraceView to display the stack trace of the current thread. No
function name available yet, otherwise working fine.


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


# 94af2f4293e787097cb1c804f38439bdf498b735 17-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed some debug output.


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


# ac8b67130a537ab4aefbbe70df31659c1d00b8d8 16-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added bits and pieces to the model classes (Team, Thread, Image).
* Added beginnings of the team window. Currently only showing the thread list
(not updated yet).
* Added application startup code and argument parsing.


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