|
Pyrogenesis
13997
|
#include <ThreadDebugger.h>
Public Member Functions | |
| CThreadDebugger () | |
| ~CThreadDebugger () | |
| void | Initialize (uint id, std::string name, ScriptInterface *pScriptInterface, CDebuggingServer *pDebuggingServer) |
| Initialize the object (required before using the object!). More... | |
| JSTrapStatus | TrapHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, jsval closure) |
| Simply calls BreakHandler with BREAK_SRC_TRAP. More... | |
| JSTrapStatus | ThrowHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval) |
| Hook to capture exceptions and breakpoints in code (throw "Breakpoint";) More... | |
| JSTrapStatus | BreakHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, jsval closure, BREAK_SRC breakSrc) |
| All other hooks call this one if the execution should be paused. More... | |
| JSTrapStatus | StepHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, void *closure) |
| JSTrapStatus | StepIntoHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, void *closure) |
| JSTrapStatus | StepOutHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, void *closure) |
| JSTrapStatus | CheckForBreakRequestHandler (JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval, void *closure) |
| This is an interrup-hook that can be called multiple times per line of code and is used to break into the execution without previously setting a breakpoint and to break other threads when one thread triggers a breakpoint. More... | |
| void | ExecuteHook (JSContext *cx, const char *filename, unsigned lineno, JSScript *script, JSFunction *fun, void *callerdata) |
| The callback function which gets executed for each new script that gets loaded and each function inside a script. More... | |
| void | NewScriptHook (JSContext *cx, const char *filename, unsigned lineno, JSScript *script, JSFunction *fun, void *callerdata) |
| This hook is used to update the mapping between filename plus line-numbers and jsbytecode pointers. More... | |
| void | DestroyScriptHook (JSContext *cx, JSScript *script) |
| This hook makes sure that invalid mappings between filename plus line-number and jsbytecode points get deleted. More... | |
| void | ClearTrap (CActiveBreakPoint *activeBreakPoint) |
| bool | CheckIfMappingPresent (std::string filename, uint line) |
| Checks if a mapping for the specified filename and line number exists in this CThreadDebugger's context. More... | |
| void | SetAllNewTraps () |
| Checks if a mapping exists for each breakpoint in the list of breakpoints that aren't set yet. More... | |
| void | SetNewTrap (CActiveBreakPoint *activeBreakPoint, std::string filename, uint line) |
| Sets a new trap and stores the information in the CActiveBreakPoint pointer Make sure that a mapping exists before calling this function Threading: Locking m_Mutex is required by the callee. More... | |
| bool | ToggleBreakPoint (std::string filename, uint userLine) |
| Toggle a breakpoint if it's active in this threadDebugger object. More... | |
| void | GetCallstack (std::stringstream &response) |
| void | GetStackFrameData (std::stringstream &response, uint nestingLevel, STACK_INFO stackInfoKind) |
| bool | CompareScriptInterfacePtr (ScriptInterface *pScriptInterface) const |
| Compares the object's associated scriptinterface with the pointer passed as parameter. More... | |
| std::string | GetBreakFileName () |
| bool | GetIsInBreak () |
| uint | GetLastBreakLine () |
| std::string | GetName () |
| uint | GetID () |
| void | ContinueExecution () |
| void | SetNextDbgCmd (DBGCMD dbgCmd) |
| DBGCMD | GetNextDbgCmd () |
| void | AddStackInfoRequest (STACK_INFO requestType, uint nestingLevel, SDL_sem *semaphore) |
Private Member Functions | |
| void | SetBreakFileName (std::string breakFileName) |
| void | SetLastBreakLine (uint breakLine) |
| void | SetIsInBreak (bool isInBreak) |
| void | SaveCallstack () |
| void | ClearTrapsToRemove () |
| Used only in the scriptinterface's thread. More... | |
| bool | CurrentFrameIsChildOf (JSStackFrame *pParentFrame) |
| void | ReturnActiveBreakPoints (jsbytecode *pBytecode) |
| void | SaveStackFrameData (STACK_INFO stackInfo, uint nestingLevel) |
| std::string | StringifyCyclicJSON (jsval obj, bool indent) |
Private Attributes | |
| std::auto_ptr < ThreadDebugger_impl > | m |
Definition at line 65 of file ThreadDebugger.h.
| CThreadDebugger::CThreadDebugger | ( | ) |
Definition at line 278 of file ThreadDebugger.cpp.
| CThreadDebugger::~CThreadDebugger | ( | ) |
Definition at line 283 of file ThreadDebugger.cpp.
| void CThreadDebugger::AddStackInfoRequest | ( | STACK_INFO | requestType, |
| uint | nestingLevel, | ||
| SDL_sem * | semaphore | ||
| ) |
Definition at line 708 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::BreakHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| jsval | closure, | ||
| BREAK_SRC | breakSrc | ||
| ) |
All other hooks call this one if the execution should be paused.
It puts the program in a wait-loop and waits for weak-up events (continue, step etc.).
Definition at line 446 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::CheckForBreakRequestHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| void * | closure | ||
| ) |
This is an interrup-hook that can be called multiple times per line of code and is used to break into the execution without previously setting a breakpoint and to break other threads when one thread triggers a breakpoint.
Definition at line 413 of file ThreadDebugger.cpp.
| bool CThreadDebugger::CheckIfMappingPresent | ( | std::string | filename, |
| uint | line | ||
| ) |
Checks if a mapping for the specified filename and line number exists in this CThreadDebugger's context.
Definition at line 256 of file ThreadDebugger.cpp.
| void CThreadDebugger::ClearTrap | ( | CActiveBreakPoint * | activeBreakPoint | ) |
Definition at line 204 of file ThreadDebugger.cpp.
|
private |
Used only in the scriptinterface's thread.
Definition at line 186 of file ThreadDebugger.cpp.
| bool CThreadDebugger::CompareScriptInterfacePtr | ( | ScriptInterface * | pScriptInterface | ) | const |
Compares the object's associated scriptinterface with the pointer passed as parameter.
Definition at line 871 of file ThreadDebugger.cpp.
| void CThreadDebugger::ContinueExecution | ( | ) |
|
private |
Definition at line 398 of file ThreadDebugger.cpp.
| void CThreadDebugger::DestroyScriptHook | ( | JSContext * | cx, |
| JSScript * | script | ||
| ) |
This hook makes sure that invalid mappings between filename plus line-number and jsbytecode points get deleted.
Definition at line 587 of file ThreadDebugger.cpp.
| void CThreadDebugger::ExecuteHook | ( | JSContext * | cx, |
| const char * | filename, | ||
| unsigned | lineno, | ||
| JSScript * | script, | ||
| JSFunction * | fun, | ||
| void * | callerdata | ||
| ) |
The callback function which gets executed for each new script that gets loaded and each function inside a script.
We use it for "Execute-Hooks" and "Call-Hooks" in terms of Spidermonkey. This hook actually sets the traps (Breakpoints) "on the fly" that have been defined by the user previously.
Definition at line 614 of file ThreadDebugger.cpp.
| std::string CThreadDebugger::GetBreakFileName | ( | ) |
Definition at line 877 of file ThreadDebugger.cpp.
| void CThreadDebugger::GetCallstack | ( | std::stringstream & | response | ) |
Definition at line 639 of file ThreadDebugger.cpp.
| uint CThreadDebugger::GetID | ( | ) |
Definition at line 931 of file ThreadDebugger.cpp.
| bool CThreadDebugger::GetIsInBreak | ( | ) |
Definition at line 901 of file ThreadDebugger.cpp.
| uint CThreadDebugger::GetLastBreakLine | ( | ) |
Definition at line 889 of file ThreadDebugger.cpp.
| std::string CThreadDebugger::GetName | ( | ) |
Definition at line 925 of file ThreadDebugger.cpp.
| DBGCMD CThreadDebugger::GetNextDbgCmd | ( | ) |
Definition at line 919 of file ThreadDebugger.cpp.
| void CThreadDebugger::GetStackFrameData | ( | std::stringstream & | response, |
| uint | nestingLevel, | ||
| STACK_INFO | stackInfoKind | ||
| ) |
Definition at line 684 of file ThreadDebugger.cpp.
| void CThreadDebugger::Initialize | ( | uint | id, |
| std::string | name, | ||
| ScriptInterface * | pScriptInterface, | ||
| CDebuggingServer * | pDebuggingServer | ||
| ) |
Initialize the object (required before using the object!).
| id | A unique identifier greater than 0 for the object inside its CDebuggingServer object. |
| name | A name that will be can be displayed by the UI to identify the thread. |
| pScriptInterface | Pointer to a scriptinterface. All Hooks, breakpoint traps etc. will be registered in this scriptinterface and will be called by the thread this scriptinterface is running in. |
| pDebuggingServer | Pointer to the DebuggingServer object this Object should belong to. |
Definition at line 325 of file ThreadDebugger.cpp.
| void CThreadDebugger::NewScriptHook | ( | JSContext * | cx, |
| const char * | filename, | ||
| unsigned | lineno, | ||
| JSScript * | script, | ||
| JSFunction * | fun, | ||
| void * | callerdata | ||
| ) |
This hook is used to update the mapping between filename plus line-numbers and jsbytecode pointers.
Definition at line 543 of file ThreadDebugger.cpp.
|
private |
Definition at line 298 of file ThreadDebugger.cpp.
|
private |
Definition at line 645 of file ThreadDebugger.cpp.
|
private |
Definition at line 717 of file ThreadDebugger.cpp.
| void CThreadDebugger::SetAllNewTraps | ( | ) |
Checks if a mapping exists for each breakpoint in the list of breakpoints that aren't set yet.
If there is a mapping, it removes the breakpoint from the list of unset breakpoints (from CDebuggingServer), adds it to the list of active breakpoints (CThreadDebugger) and sets a trap. Threading: m_Mutex is locked in this call
Definition at line 214 of file ThreadDebugger.cpp.
|
private |
Definition at line 883 of file ThreadDebugger.cpp.
|
private |
Definition at line 907 of file ThreadDebugger.cpp.
|
private |
Definition at line 895 of file ThreadDebugger.cpp.
| void CThreadDebugger::SetNewTrap | ( | CActiveBreakPoint * | activeBreakPoint, |
| std::string | filename, | ||
| uint | line | ||
| ) |
Sets a new trap and stores the information in the CActiveBreakPoint pointer Make sure that a mapping exists before calling this function Threading: Locking m_Mutex is required by the callee.
Definition at line 262 of file ThreadDebugger.cpp.
| void CThreadDebugger::SetNextDbgCmd | ( | DBGCMD | dbgCmd | ) |
Definition at line 913 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::StepHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| void * | closure | ||
| ) |
Definition at line 345 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::StepIntoHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| void * | closure | ||
| ) |
Definition at line 365 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::StepOutHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| void * | closure | ||
| ) |
Definition at line 382 of file ThreadDebugger.cpp.
|
private |
Definition at line 835 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::ThrowHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval | ||
| ) |
Hook to capture exceptions and breakpoints in code (throw "Breakpoint";)
Definition at line 428 of file ThreadDebugger.cpp.
| bool CThreadDebugger::ToggleBreakPoint | ( | std::string | filename, |
| uint | userLine | ||
| ) |
Toggle a breakpoint if it's active in this threadDebugger object.
Threading: Locking m_Mutex is required by the callee
| filename | full vfs path to the script filename |
| userLine | linenumber where the USER set the breakpoint (UserLine) |
Definition at line 624 of file ThreadDebugger.cpp.
| JSTrapStatus CThreadDebugger::TrapHandler | ( | JSContext * | cx, |
| JSScript * | script, | ||
| jsbytecode * | pc, | ||
| jsval * | rval, | ||
| jsval | closure | ||
| ) |
Simply calls BreakHandler with BREAK_SRC_TRAP.
Definition at line 422 of file ThreadDebugger.cpp.
|
private |
Definition at line 180 of file ThreadDebugger.h.
1.8.5