fce4895d18
- 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.
119 lines
3.3 KiB
C++
119 lines
3.3 KiB
C++
/*
|
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
* Copyright 2014, Rene Gollent, rene@gollent.com.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef TEAM_DEBUG_INFO_H
|
|
#define TEAM_DEBUG_INFO_H
|
|
|
|
|
|
#include <Locker.h>
|
|
|
|
#include <ObjectList.h>
|
|
#include <Referenceable.h>
|
|
#include <util/OpenHashTable.h>
|
|
|
|
#include "GlobalTypeLookup.h"
|
|
#include "ImageInfo.h"
|
|
#include "TeamTypeInformation.h"
|
|
|
|
|
|
class Architecture;
|
|
class DebuggerInterface;
|
|
class DisassembledCode;
|
|
class FileManager;
|
|
class FileSourceCode;
|
|
class Function;
|
|
class FunctionID;
|
|
class FunctionInstance;
|
|
class ImageDebugInfo;
|
|
class ImageDebugInfoLoadingState;
|
|
class ImageInfo;
|
|
class LocatableFile;
|
|
class SourceCode;
|
|
class SourceLocation;
|
|
class SpecificTeamDebugInfo;
|
|
|
|
|
|
class TeamDebugInfo : public GlobalTypeLookup, public TeamTypeInformation {
|
|
public:
|
|
TeamDebugInfo(
|
|
DebuggerInterface* debuggerInterface,
|
|
Architecture* architecture,
|
|
FileManager* fileManager);
|
|
~TeamDebugInfo();
|
|
|
|
status_t Init();
|
|
|
|
virtual status_t GetType(GlobalTypeCache* cache,
|
|
const BString& name,
|
|
const TypeLookupConstraints& constraints,
|
|
Type*& _type);
|
|
virtual bool HasType(GlobalTypeCache* cache,
|
|
const BString& name,
|
|
const TypeLookupConstraints& constraints);
|
|
|
|
virtual status_t LookupTypeByName(const BString& name,
|
|
const TypeLookupConstraints& constraints,
|
|
Type*& _type);
|
|
virtual bool TypeExistsByName(const BString& name,
|
|
const TypeLookupConstraints& constraints);
|
|
|
|
status_t LoadImageDebugInfo(const ImageInfo& imageInfo,
|
|
LocatableFile* imageFile,
|
|
ImageDebugInfoLoadingState& state,
|
|
ImageDebugInfo*& _imageDebugInfo);
|
|
|
|
status_t LoadSourceCode(LocatableFile* file,
|
|
FileSourceCode*& _sourceCode);
|
|
// returns reference
|
|
void ClearSourceCode(LocatableFile* file);
|
|
|
|
status_t DisassembleFunction(
|
|
FunctionInstance* functionInstance,
|
|
DisassembledCode*& _sourceCode);
|
|
// returns reference
|
|
FunctionInstance* MainFunction() const
|
|
{ return fMainFunction; }
|
|
|
|
// team is locked
|
|
status_t AddImageDebugInfo(
|
|
ImageDebugInfo* imageDebugInfo);
|
|
void RemoveImageDebugInfo(
|
|
ImageDebugInfo* imageDebugInfo);
|
|
ImageDebugInfo* ImageDebugInfoByName(const char* name) const;
|
|
|
|
Function* FunctionAtSourceLocation(LocatableFile* file,
|
|
const SourceLocation& location) const;
|
|
Function* FunctionByID(FunctionID* functionID) const;
|
|
|
|
private:
|
|
struct FunctionHashDefinition;
|
|
struct SourceFileEntry;
|
|
struct SourceFileHashDefinition;
|
|
|
|
typedef BObjectList<SpecificTeamDebugInfo> SpecificInfoList;
|
|
typedef BObjectList<ImageDebugInfo> ImageList;
|
|
typedef BOpenHashTable<FunctionHashDefinition> FunctionTable;
|
|
typedef BOpenHashTable<SourceFileHashDefinition> SourceFileTable;
|
|
|
|
private:
|
|
status_t _AddFunction(Function* function);
|
|
void _RemoveFunction(Function* function);
|
|
|
|
private:
|
|
BLocker fLock;
|
|
DebuggerInterface* fDebuggerInterface;
|
|
Architecture* fArchitecture;
|
|
FileManager* fFileManager;
|
|
SpecificInfoList fSpecificInfos;
|
|
ImageList fImages;
|
|
FunctionTable* fFunctions;
|
|
SourceFileTable* fSourceFiles;
|
|
GlobalTypeCache* fTypeCache;
|
|
FunctionInstance* fMainFunction;
|
|
};
|
|
|
|
|
|
#endif // TEAM_DEBUG_INFO_H
|