Tie DebugReportGenerator into TeamDebugger.
- Add UI listener hook. Still needs to be exposed via the actual UI though.
This commit is contained in:
@@ -55,7 +55,8 @@ enum {
|
|||||||
MSG_INSPECT_ADDRESS = 'isad',
|
MSG_INSPECT_ADDRESS = 'isad',
|
||||||
MSG_SHOW_TYPECAST_NODE_PROMPT = 'stnp',
|
MSG_SHOW_TYPECAST_NODE_PROMPT = 'stnp',
|
||||||
MSG_TYPECAST_NODE = 'tyno',
|
MSG_TYPECAST_NODE = 'tyno',
|
||||||
MSG_SHOW_WATCH_VARIABLE_PROMPT = 'swvp'
|
MSG_SHOW_WATCH_VARIABLE_PROMPT = 'swvp',
|
||||||
|
MSG_GENERATE_DEBUG_REPORT = 'gdrp'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <new>
|
#include <new>
|
||||||
|
|
||||||
|
#include <Entry.h>
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
|
|
||||||
#include <AutoLocker.h>
|
#include <AutoLocker.h>
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
#include "BreakpointSetting.h"
|
#include "BreakpointSetting.h"
|
||||||
#include "CpuState.h"
|
#include "CpuState.h"
|
||||||
#include "DebuggerInterface.h"
|
#include "DebuggerInterface.h"
|
||||||
|
#include "DebugReportGenerator.h"
|
||||||
#include "FileManager.h"
|
#include "FileManager.h"
|
||||||
#include "Function.h"
|
#include "Function.h"
|
||||||
#include "FunctionID.h"
|
#include "FunctionID.h"
|
||||||
@@ -146,6 +148,7 @@ TeamDebugger::TeamDebugger(Listener* listener, UserInterface* userInterface,
|
|||||||
fBreakpointManager(NULL),
|
fBreakpointManager(NULL),
|
||||||
fWatchpointManager(NULL),
|
fWatchpointManager(NULL),
|
||||||
fMemoryBlockManager(NULL),
|
fMemoryBlockManager(NULL),
|
||||||
|
fReportGenerator(NULL),
|
||||||
fDebugEventListener(-1),
|
fDebugEventListener(-1),
|
||||||
fUserInterface(userInterface),
|
fUserInterface(userInterface),
|
||||||
fTerminating(false),
|
fTerminating(false),
|
||||||
@@ -204,6 +207,7 @@ TeamDebugger::~TeamDebugger()
|
|||||||
delete fBreakpointManager;
|
delete fBreakpointManager;
|
||||||
delete fWatchpointManager;
|
delete fWatchpointManager;
|
||||||
delete fMemoryBlockManager;
|
delete fMemoryBlockManager;
|
||||||
|
delete fReportGenerator;
|
||||||
delete fWorker;
|
delete fWorker;
|
||||||
delete fTeam;
|
delete fTeam;
|
||||||
delete fFileManager;
|
delete fFileManager;
|
||||||
@@ -327,6 +331,15 @@ TeamDebugger::Init(team_id teamID, thread_id threadID, bool stopInMain)
|
|||||||
if (error != B_OK)
|
if (error != B_OK)
|
||||||
return error;
|
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
|
// set team debugging flags
|
||||||
fDebuggerInterface->SetTeamDebuggingFlags(
|
fDebuggerInterface->SetTeamDebuggingFlags(
|
||||||
B_TEAM_DEBUG_THREADS | B_TEAM_DEBUG_IMAGES);
|
B_TEAM_DEBUG_THREADS | B_TEAM_DEBUG_IMAGES);
|
||||||
@@ -535,6 +548,14 @@ TeamDebugger::MessageReceived(BMessage* message)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case MSG_GENERATE_DEBUG_REPORT:
|
||||||
|
{
|
||||||
|
entry_ref ref;
|
||||||
|
if (message->FindRef("target", &ref) == B_OK)
|
||||||
|
_HandleGenerateDebugReport(ref);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case MSG_THREAD_STATE_CHANGED:
|
case MSG_THREAD_STATE_CHANGED:
|
||||||
{
|
{
|
||||||
int32 threadID;
|
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
|
bool
|
||||||
TeamDebugger::UserInterfaceQuitRequested(QuitOption quitOption)
|
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*
|
ThreadHandler*
|
||||||
TeamDebugger::_GetThreadHandler(thread_id threadID)
|
TeamDebugger::_GetThreadHandler(thread_id threadID)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class DebuggerInterface;
|
class DebuggerInterface;
|
||||||
|
class DebugReportGenerator;
|
||||||
class FileManager;
|
class FileManager;
|
||||||
class SettingsManager;
|
class SettingsManager;
|
||||||
class TeamDebugInfo;
|
class TeamDebugInfo;
|
||||||
@@ -78,6 +79,9 @@ private:
|
|||||||
|
|
||||||
virtual void InspectRequested(target_addr_t address,
|
virtual void InspectRequested(target_addr_t address,
|
||||||
TeamMemoryBlock::Listener* listener);
|
TeamMemoryBlock::Listener* listener);
|
||||||
|
|
||||||
|
virtual void DebugReportRequested(entry_ref* targetPath);
|
||||||
|
|
||||||
virtual bool UserInterfaceQuitRequested(
|
virtual bool UserInterfaceQuitRequested(
|
||||||
QuitOption quitOption);
|
QuitOption quitOption);
|
||||||
|
|
||||||
@@ -143,6 +147,9 @@ private:
|
|||||||
target_addr_t address,
|
target_addr_t address,
|
||||||
TeamMemoryBlock::Listener* listener);
|
TeamMemoryBlock::Listener* listener);
|
||||||
|
|
||||||
|
void _HandleGenerateDebugReport(
|
||||||
|
const entry_ref& target);
|
||||||
|
|
||||||
ThreadHandler* _GetThreadHandler(thread_id threadID);
|
ThreadHandler* _GetThreadHandler(thread_id threadID);
|
||||||
|
|
||||||
status_t _AddImage(const ImageInfo& imageInfo,
|
status_t _AddImage(const ImageInfo& imageInfo,
|
||||||
@@ -170,6 +177,8 @@ private:
|
|||||||
WatchpointManager* fWatchpointManager;
|
WatchpointManager* fWatchpointManager;
|
||||||
TeamMemoryBlockManager*
|
TeamMemoryBlockManager*
|
||||||
fMemoryBlockManager;
|
fMemoryBlockManager;
|
||||||
|
DebugReportGenerator*
|
||||||
|
fReportGenerator;
|
||||||
thread_id fDebugEventListener;
|
thread_id fDebugEventListener;
|
||||||
UserInterface* fUserInterface;
|
UserInterface* fUserInterface;
|
||||||
volatile bool fTerminating;
|
volatile bool fTerminating;
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
#include "Types.h"
|
#include "Types.h"
|
||||||
|
|
||||||
|
|
||||||
|
class entry_ref;
|
||||||
|
|
||||||
class CpuState;
|
class CpuState;
|
||||||
class FunctionInstance;
|
class FunctionInstance;
|
||||||
class Image;
|
class Image;
|
||||||
@@ -116,6 +118,8 @@ public:
|
|||||||
target_addr_t address,
|
target_addr_t address,
|
||||||
TeamMemoryBlock::Listener* listener) = 0;
|
TeamMemoryBlock::Listener* listener) = 0;
|
||||||
|
|
||||||
|
virtual void DebugReportRequested(entry_ref* path) = 0;
|
||||||
|
|
||||||
virtual bool UserInterfaceQuitRequested(
|
virtual bool UserInterfaceQuitRequested(
|
||||||
QuitOption quitOption
|
QuitOption quitOption
|
||||||
= QUIT_OPTION_ASK_USER) = 0;
|
= QUIT_OPTION_ASK_USER) = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user