Thread now also tracks the address of the last executed function.

This commit is contained in:
Rene Gollent 2012-12-31 22:52:34 -05:00
parent cf2e209b2d
commit bdbbc10b44
2 changed files with 10 additions and 2 deletions

View File

@ -18,6 +18,7 @@ Thread::Thread(Team* team, thread_id threadID)
fID(threadID),
fState(THREAD_STATE_UNKNOWN),
fExecutedSubroutine(false),
fSubroutineAddress(0),
fStoppedReason(THREAD_STOPPED_UNKNOWN),
fCpuState(NULL),
fStackTrace(NULL)
@ -70,6 +71,7 @@ Thread::SetState(uint32 state, uint32 reason, const BString& info)
SetCpuState(NULL);
SetStackTrace(NULL);
fExecutedSubroutine = false;
fSubroutineAddress = 0;
}
fTeam->NotifyThreadStateChanged(this);
@ -113,8 +115,9 @@ Thread::SetStackTrace(StackTrace* trace)
void
Thread::SetExecutedSubroutine()
Thread::SetExecutedSubroutine(target_addr_t address)
{
fExecutedSubroutine = true;
fSubroutineAddress = address;
}

View File

@ -11,6 +11,8 @@
#include <Referenceable.h>
#include <util/DoublyLinkedList.h>
#include "types/Types.h"
class CpuState;
class StackTrace;
@ -69,7 +71,9 @@ public:
bool ExecutedSubroutine() const
{ return fExecutedSubroutine; }
void SetExecutedSubroutine();
target_addr_t SubroutineAddress() const
{ return fSubroutineAddress; }
void SetExecutedSubroutine(target_addr_t address);
private:
Team* fTeam;
@ -77,6 +81,7 @@ private:
BString fName;
uint32 fState;
bool fExecutedSubroutine;
target_addr_t fSubroutineAddress;
uint32 fStoppedReason;
BString fStoppedReasonInfo;
CpuState* fCpuState;