Commit Graph
30 Commits
Author SHA1 Message Date
Rene Gollent e2d845a47f Debugger: Implement remainder of #12729.
UserInterfaceListener:
- Add request hook for writing a core file. Implement in TeamDebugger.

Jobs/WriteCoreFileJob:
- Add new job to actually dispatch the core file request via the debugger
  interface.

Team{::Listener}
- Add listener event + hook for notifications when a core file gets written.
  Implement in CLI.

CliContext:
- Add event flag for core file changed.

CommandLineUserInterface:
- Add 'write-core' command. This optionally takes a path to write the core to,
  otherwise one is automatically generated by, similarly to debug reports. As
  such, one can now generate cores for things like app_server and registrar
  crashes if desired, in addition to reports.
2016-04-26 22:36:26 -04:00
Rene Gollent 2d9d01e2e8 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.
2015-08-22 00:21:07 -04:00
Rene Gollent 7f77789d5b Debugger: Add work notification hook to UserInterface.
UserInterface:
- Add new hook function used to notify the UI that some form of
  background work is taking place for informational purposes,
  i.e. no interaction required. Implement accordingly in
  GraphicalUserInterface.
2015-08-14 20:53:03 -04:00
Rene Gollent 8b9099b1b2 Debugger: Fix #11411.
CliContext/CommandLineUserInterface:
- Process the debug report event asynchronously. The missing lock that
  was fixed in commit 5ac34e5a78 highlighted
  a problem in how the CLI was handling the case where it was intended to
  exit immediately after saving a report, since it issued the quit request
  directly from the report event handler. This resulted in locking issues,
  as the team debugger would then attempt to tear itself down, during which
  it needs to acquire the team lock. However, that was already being held
  by the thread in which the CLI was initiating the quit, resulting in a
  deadlock.
2014-11-04 19:21:20 -05:00
Rene Gollent bbf320ecfe Debugger: UserInterface enhancements.
Add hook to UserInterface to query if Debugger is currently being run
interactively or not. Add corresponding implementations in
{CommandLine,Graphical}UserInterface.
2014-06-18 22:25:50 -04:00
Rene Gollent d9e97187f5 Debugger: Add file prompt hook to UserInterface.
In some circumstances, it may be necessary to ask the user to locate a file
from the lower layers. Adds the corresponding hook to UserInterface, and a
stub implementation for CommandLineUserInterface.

Adds full implementation for GraphicalUserInterface.
2014-06-15 11:03:22 -04:00
Rene Gollent dad4ae32f1 Debugger: Fix race condition.
- For the functionality added to address #10283, we need to wait until we
receive the Team listener's thread state change notification before submitting
the report generation request, else the thread might not actually be stopped
yet when the generator walks the thread list. Should fix some lingering issues
with stack traces sometimes not being returned when using this mode of
operation.
2013-12-09 18:40:45 -05:00
Rene Gollent e8948527c2 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.
2013-12-07 11:15:17 -05:00
Rene Gollent 7024fac220 Clean up _RegisterCommands().
- _RegisterCommand() now accepts a space separated list of names
  to register a command by and creates a registration for each.
2012-12-19 22:27:45 -05:00
Rene Gollent ec7c59ca09 Add memory dumping commands similar to those in KDL. 2012-12-18 21:37:55 -05:00
Rene Gollent 596922bb7f Add CLI print variable command. 2012-12-17 20:46:27 -05:00
Rene Gollent 287cda6f72 Add some more commands to the CLI.
- Added 'frame' command for setting/printing the context's current stack
  frame within the active stack trace.
- Added 'variables' command for printing the list of variables visible
  within the current frame.
2012-12-16 22:03:35 -05:00
Rene Gollent 5fe3a57c43 Fix handling of automatic debug reports.
- 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.
2012-11-24 00:53:09 -05:00
Rene Gollent 6799de315e 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.
2012-11-23 13:04:49 -05:00
Rene Gollent ae10992d0e Fix order. 2012-11-23 11:57:23 -05:00
Rene Gollent bb7d146c64 Add CLI command for saving debug reports. 2012-11-22 23:41:34 -05:00
Ingo Weinhold 9b008d31ff Debugger CLI: Add a bunch of new commands
* "thread": prints/sets the current thread.
* "continue", "stop": continue/stop the current thread.
* "sc"/"bt": Print a stack trace for the current thread. Very basic yet.
2012-08-05 01:07:17 +02:00
Ingo Weinhold 86b1039b42 Debugger CliContext: More event handling, current thread
* Introduce the notion of a current thread. That's the one certain
  commands will target (by default).
* Add more event handling in CliContext. There's now a queue of pending
  events which are printed in the input loop at convenient times to
  inform the user about what happened (new/deleted/stopped threads,
  etc.).
2012-08-05 01:07:17 +02:00
Ingo Weinhold d4586180a6 Debugger CLI: Improve "help" command
Given a command name it prints the command's usage.
2012-08-05 01:07:16 +02:00
Ingo Weinhold 8fe9f8b2d0 Debugger CLI: Move more stuff to and extend CliContext
* Move the libedit interface there and provide nicer to use methods.
* Also start adding utility methods for the input loop. It is going to
  manage all interactions of the input loop with outside events.
* Fix the "quit" command. The user is now prompted what to do with the
  debugged team and the input loop thread avoids reentering the input
  loop.
2012-07-27 23:42:01 +02:00
Ingo Weinhold eba38eb503 Debugger: Change user interface quit and ask user semantics
* UserInterface::SynchronouslyAskUser() is now allowed to return -1 to
  indicate that the user cannot be asked at this point for whatever
  reason. The caller needs to handle that case.
* UserInterfaceListener::UserInterfaceQuitRequested(): Add new parameter
  "quitOption" to specify what is supposed to happen. The previous
  behavior (ask user) is only one of the options. The others are to kill
  the debugged team or to resume it.
2012-07-27 23:42:01 +02:00
Ingo Weinhold aacf2782d8 Debugger: Switch from readline to libedit 2012-07-25 00:11:14 +02:00
Ingo Weinhold f4b1ddb580 Debugger: Coding style: normalize naming, some whitespace fixes
* TeamUISettings[Factory] -> TeamUiSettings[Factory]
* GUITeamUISettings -> GuiTeamUiSettings
* GUISettingsUtils -> GuiSettingsUtils
2012-07-24 00:28:37 +02:00
Ingo Weinhold 48b4d20480 Debugger CLI: Add "threads" command
It just lists the team's thread.
2012-07-23 23:52:46 +02:00
Ingo Weinhold a6de32b06c Debugger CLI: Pull QuitCommand out of CommandLineUserInterface 2012-07-23 23:52:46 +02:00
Ingo Weinhold d0ef75400b Debugger CLI: Start to imbue CliContext with life 2012-07-23 23:52:45 +02:00
Ingo Weinhold abbcb2caf5 Debugger: Use readline in the CLI
This is a bit hacky, since gdb's readline is used. It would probably be
best to prepare an optional build package.
2012-07-23 23:52:45 +02:00
Ingo Weinhold 0a592099a9 Debugger: Rework CLI setup to no longer create a BApplication
The main thread does now serve the CLI input loop.
2012-07-21 09:19:18 +02:00
Ingo Weinhold 6d60b554e6 Debugger: Some basic work to get the CLI going
There's an input loop thread which reads and parses command lines and
the infrastructure for registering and executing commands. Currently
only "help" and "quit" commands are implemented.
2012-07-20 23:32:58 +02:00
Rene Gollent 20616c59c1 Add stubs for the eventual command line interface.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-03 10:42:56 +00:00