Debugger: Add classes for representing image loading state.
Adds a hierarchy of classes for preserving the loading state information for a LoadImageDebugInfoJob. These include: - ImageDebugInfoLoadingState: Top level class that simply stores a reference for the specific info state that we're currently attempting to load. - SpecificImageDebugInfoLoadingState: Abstract base class representing state information specific to a particular kind of debug information. - DwarfImageDebugInfoLoadingState: Implementation of the above for the case of DWARF. - DwarfFileLoadingState: Encapsulates the in-progress loading state of a DWARF file for the case where a file's debug information is referenced externally, but cannot be found.
This commit is contained in:
@@ -100,6 +100,7 @@ Application Debugger :
|
|||||||
DebuggerTeamDebugInfo.cpp
|
DebuggerTeamDebugInfo.cpp
|
||||||
DwarfFunctionDebugInfo.cpp
|
DwarfFunctionDebugInfo.cpp
|
||||||
DwarfImageDebugInfo.cpp
|
DwarfImageDebugInfo.cpp
|
||||||
|
DwarfImageDebugInfoLoadingState.cpp
|
||||||
DwarfStackFrameDebugInfo.cpp
|
DwarfStackFrameDebugInfo.cpp
|
||||||
DwarfTeamDebugInfo.cpp
|
DwarfTeamDebugInfo.cpp
|
||||||
DwarfTypeFactory.cpp
|
DwarfTypeFactory.cpp
|
||||||
@@ -109,9 +110,11 @@ Application Debugger :
|
|||||||
FunctionInstance.cpp
|
FunctionInstance.cpp
|
||||||
GlobalTypeLookup.cpp
|
GlobalTypeLookup.cpp
|
||||||
ImageDebugInfo.cpp
|
ImageDebugInfo.cpp
|
||||||
|
ImageDebugInfoLoadingState.cpp
|
||||||
ImageDebugInfoProvider.cpp
|
ImageDebugInfoProvider.cpp
|
||||||
NoOpStackFrameDebugInfo.cpp
|
NoOpStackFrameDebugInfo.cpp
|
||||||
SpecificImageDebugInfo.cpp
|
SpecificImageDebugInfo.cpp
|
||||||
|
SpecificImageDebugInfoLoadingState.cpp
|
||||||
SpecificTeamDebugInfo.cpp
|
SpecificTeamDebugInfo.cpp
|
||||||
StackFrameDebugInfo.cpp
|
StackFrameDebugInfo.cpp
|
||||||
TeamDebugInfo.cpp
|
TeamDebugInfo.cpp
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "DwarfImageDebugInfoLoadingState.h"
|
||||||
|
|
||||||
|
|
||||||
|
DwarfImageDebugInfoLoadingState::DwarfImageDebugInfoLoadingState()
|
||||||
|
:
|
||||||
|
SpecificImageDebugInfoLoadingState(),
|
||||||
|
fState()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DwarfImageDebugInfoLoadingState::~DwarfImageDebugInfoLoadingState()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
DwarfImageDebugInfoLoadingState::UserInputRequired() const
|
||||||
|
{
|
||||||
|
return fState.state == DWARF_FILE_LOADING_STATE_USER_INPUT_NEEDED;
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef DWARF_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
#define DWARF_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "DwarfFileLoadingState.h"
|
||||||
|
#include "SpecificImageDebugInfoLoadingState.h"
|
||||||
|
|
||||||
|
|
||||||
|
class DwarfImageDebugInfoLoadingState
|
||||||
|
: public SpecificImageDebugInfoLoadingState {
|
||||||
|
public:
|
||||||
|
DwarfImageDebugInfoLoadingState();
|
||||||
|
virtual ~DwarfImageDebugInfoLoadingState();
|
||||||
|
|
||||||
|
virtual bool UserInputRequired() const;
|
||||||
|
|
||||||
|
DwarfFileLoadingState& GetFileState()
|
||||||
|
{ return fState; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
DwarfFileLoadingState fState;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // DWARF_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "ImageDebugInfoLoadingState.h"
|
||||||
|
|
||||||
|
#include "SpecificImageDebugInfoLoadingState.h"
|
||||||
|
|
||||||
|
|
||||||
|
ImageDebugInfoLoadingState::ImageDebugInfoLoadingState()
|
||||||
|
:
|
||||||
|
fSpecificInfoLoadingState(),
|
||||||
|
fSpecificInfoIndex(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ImageDebugInfoLoadingState::~ImageDebugInfoLoadingState()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
ImageDebugInfoLoadingState::HasSpecificDebugInfoLoadingState() const
|
||||||
|
{
|
||||||
|
return fSpecificInfoLoadingState.Get() != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ImageDebugInfoLoadingState::SetSpecificDebugInfoLoadingState(
|
||||||
|
SpecificImageDebugInfoLoadingState* state)
|
||||||
|
{
|
||||||
|
fSpecificInfoLoadingState.SetTo(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ImageDebugInfoLoadingState::ClearSpecificDebugInfoLoadingState()
|
||||||
|
{
|
||||||
|
fSpecificInfoLoadingState = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
ImageDebugInfoLoadingState::UserInputRequired() const
|
||||||
|
{
|
||||||
|
if (HasSpecificDebugInfoLoadingState())
|
||||||
|
return fSpecificInfoLoadingState->UserInputRequired();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ImageDebugInfoLoadingState::SetSpecificInfoIndex(int32 index)
|
||||||
|
{
|
||||||
|
fSpecificInfoIndex = index;
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
#define IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
|
||||||
|
#include <Referenceable.h>
|
||||||
|
|
||||||
|
|
||||||
|
class SpecificImageDebugInfoLoadingState;
|
||||||
|
|
||||||
|
|
||||||
|
class ImageDebugInfoLoadingState {
|
||||||
|
public:
|
||||||
|
ImageDebugInfoLoadingState();
|
||||||
|
virtual ~ImageDebugInfoLoadingState();
|
||||||
|
|
||||||
|
bool HasSpecificDebugInfoLoadingState() const;
|
||||||
|
SpecificImageDebugInfoLoadingState*
|
||||||
|
GetSpecificDebugInfoLoadingState() const
|
||||||
|
{ return fSpecificInfoLoadingState; }
|
||||||
|
void SetSpecificDebugInfoLoadingState(
|
||||||
|
SpecificImageDebugInfoLoadingState* state);
|
||||||
|
// note: takes over reference of passed
|
||||||
|
// in state object.
|
||||||
|
void ClearSpecificDebugInfoLoadingState();
|
||||||
|
|
||||||
|
bool UserInputRequired() const;
|
||||||
|
|
||||||
|
|
||||||
|
int32 GetSpecificInfoIndex() const
|
||||||
|
{ return fSpecificInfoIndex; }
|
||||||
|
void SetSpecificInfoIndex(int32 index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
BReference<SpecificImageDebugInfoLoadingState>
|
||||||
|
fSpecificInfoLoadingState;
|
||||||
|
int32 fSpecificInfoIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "SpecificImageDebugInfoLoadingState.h"
|
||||||
|
|
||||||
|
|
||||||
|
SpecificImageDebugInfoLoadingState::SpecificImageDebugInfoLoadingState()
|
||||||
|
:
|
||||||
|
BReferenceable()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SpecificImageDebugInfoLoadingState::~SpecificImageDebugInfoLoadingState()
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef SPECIFIC_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
#define SPECIFIC_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <Referenceable.h>
|
||||||
|
|
||||||
|
|
||||||
|
class SpecificImageDebugInfoLoadingState : public BReferenceable {
|
||||||
|
public:
|
||||||
|
SpecificImageDebugInfoLoadingState();
|
||||||
|
virtual ~SpecificImageDebugInfoLoadingState();
|
||||||
|
|
||||||
|
virtual bool UserInputRequired() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // SPECIFIC_IMAGE_DEBUG_INFO_LOADING_STATE_H
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "DwarfFileLoadingState.h"
|
||||||
|
|
||||||
|
#include "DwarfFile.h"
|
||||||
|
|
||||||
|
|
||||||
|
DwarfFileLoadingState::DwarfFileLoadingState()
|
||||||
|
:
|
||||||
|
dwarfFile(),
|
||||||
|
externalInfoFileName(),
|
||||||
|
locatedExternalInfoPath(),
|
||||||
|
state(DWARF_FILE_LOADING_STATE_INITIAL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DwarfFileLoadingState::~DwarfFileLoadingState()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef DWARF_FILE_LOADING_STATE_H
|
||||||
|
#define DWARF_FILE_LOADING_STATE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <Referenceable.h>
|
||||||
|
#include <String.h>
|
||||||
|
|
||||||
|
|
||||||
|
class DwarfFile;
|
||||||
|
|
||||||
|
|
||||||
|
enum dwarf_file_loading_state {
|
||||||
|
DWARF_FILE_LOADING_STATE_INITIAL = 0,
|
||||||
|
DWARF_FILE_LOADING_STATE_USER_INPUT_NEEDED,
|
||||||
|
DWARF_FILE_LOADING_STATE_USER_INPUT_PROVIDED,
|
||||||
|
DWARF_FILE_LOADING_STATE_FAILED,
|
||||||
|
DWARF_FILE_LOADING_STATE_SUCCEEDED
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct DwarfFileLoadingState {
|
||||||
|
BReference<DwarfFile>
|
||||||
|
dwarfFile;
|
||||||
|
BString externalInfoFileName;
|
||||||
|
BString locatedExternalInfoPath;
|
||||||
|
dwarf_file_loading_state
|
||||||
|
state;
|
||||||
|
|
||||||
|
DwarfFileLoadingState();
|
||||||
|
~DwarfFileLoadingState();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // DWARF_FILE_LOADING_STATE_H
|
||||||
@@ -22,6 +22,7 @@ MergeObject Debugger_dwarf.o
|
|||||||
DebugInfoEntry.cpp
|
DebugInfoEntry.cpp
|
||||||
DwarfExpressionEvaluator.cpp
|
DwarfExpressionEvaluator.cpp
|
||||||
DwarfFile.cpp
|
DwarfFile.cpp
|
||||||
|
DwarfFileLoadingState.cpp
|
||||||
DwarfManager.cpp
|
DwarfManager.cpp
|
||||||
DwarfTargetInterface.cpp
|
DwarfTargetInterface.cpp
|
||||||
DwarfUtils.cpp
|
DwarfUtils.cpp
|
||||||
|
|||||||
Reference in New Issue
Block a user