Tie DebugReportGenerator into TeamDebugger.

- Add UI listener hook. Still needs to be exposed via the actual
  UI though.
This commit is contained in:
Rene Gollent
2012-11-18 13:10:31 -05:00
parent 8e0e0918b6
commit 2efebaa1d1
4 changed files with 52 additions and 1 deletions
@@ -12,6 +12,7 @@
#include <new>
#include <Entry.h>
#include <Message.h>
#include <AutoLocker.h>
@@ -22,6 +23,7 @@
#include "BreakpointSetting.h"
#include "CpuState.h"
#include "DebuggerInterface.h"
#include "DebugReportGenerator.h"
#include "FileManager.h"
#include "Function.h"
#include "FunctionID.h"
@@ -146,6 +148,7 @@ TeamDebugger::TeamDebugger(Listener* listener, UserInterface* userInterface,
fBreakpointManager(NULL),
fWatchpointManager(NULL),
fMemoryBlockManager(NULL),
fReportGenerator(NULL),
fDebugEventListener(-1),
fUserInterface(userInterface),
fTerminating(false),
@@ -204,6 +207,7 @@ TeamDebugger::~TeamDebugger()
delete fBreakpointManager;
delete fWatchpointManager;
delete fMemoryBlockManager;
delete fReportGenerator;
delete fWorker;
delete fTeam;
delete fFileManager;
@@ -327,6 +331,15 @@ TeamDebugger::Init(team_id teamID, thread_id threadID, bool stopInMain)
if (error != B_OK)
return error;
// create the debug report generator
fReportGenerator = new(std::nothrow) DebugReportGenerator(fTeam);
if (fReportGenerator == NULL)
return B_NO_MEMORY;
error = fReportGenerator->Init();
if (error != B_OK)
return error;
// set team debugging flags
fDebuggerInterface->SetTeamDebuggingFlags(
B_TEAM_DEBUG_THREADS | B_TEAM_DEBUG_IMAGES);
@@ -535,6 +548,14 @@ TeamDebugger::MessageReceived(BMessage* message)
break;
}
case MSG_GENERATE_DEBUG_REPORT:
{
entry_ref ref;
if (message->FindRef("target", &ref) == B_OK)
_HandleGenerateDebugReport(ref);
break;
}
case MSG_THREAD_STATE_CHANGED:
{
int32 threadID;
@@ -809,6 +830,15 @@ TeamDebugger::InspectRequested(target_addr_t address,
}
void
TeamDebugger::DebugReportRequested(entry_ref* targetPath)
{
BMessage message(MSG_GENERATE_DEBUG_REPORT);
message.AddRef("target", targetPath);
PostMessage(&message);
}
bool
TeamDebugger::UserInterfaceQuitRequested(QuitOption quitOption)
{
@@ -1502,6 +1532,13 @@ TeamDebugger::_HandleInspectAddress(target_addr_t address,
}
void
TeamDebugger::_HandleGenerateDebugReport(const entry_ref& ref)
{
fReportGenerator->GenerateReport(ref);
}
ThreadHandler*
TeamDebugger::_GetThreadHandler(thread_id threadID)
{