jsdIDebuggerService

IID:9dd9006a-4e5e-4a80-ac3d-007fb7335ca4
Inherits From:nsISupports

This interface is intended to be used as a service.

This interface is implemented by the following components:


Constants

Possible values for jsdIScript::version and jsdIContext::version.
PRInt32 VERSION_1_0 = 100
PRInt32 VERSION_1_1 = 110
PRInt32 VERSION_1_2 = 120
PRInt32 VERSION_1_3 = 130
PRInt32 VERSION_1_4 = 140
PRInt32 VERSION_1_5 = 150
PRInt32 VERSION_DEFAULT = 0
PRInt32 VERSION_UNKNOWN = -1
Link native frames in call stacks.
PRUint32 ENABLE_NATIVE_FRAMES = 1
Normally, if a script has a 0 in JSD_SCRIPT_PROFILE_BIT it is included in profile data, otherwise it is not profiled. Setting the PROFILE_WHEN_SET flag reverses this convention.
PRUint32 PROFILE_WHEN_SET = 2
Normally, when the script in the top frame of a thread state has a 1 in JSD_SCRIPT_DEBUG_BIT, the execution hook is ignored. Setting the DEBUG_WHEN_SET flag reverses this convention.
PRUint32 DEBUG_WHEN_SET = 4
When this flag is set the internal call hook will collect profile data.
PRUint32 COLLECT_PROFILE_DATA = 8
When this flag is set, stack frames that are disabled for debugging will not appear in the call stack chain.
PRUint32 HIDE_DISABLED_FRAMES = 16
When this flag is set, the debugger will only check the JSD_SCRIPT_DEBUG_BIT on the top (most recent) stack frame. This makes it possible to stop in an enabled frame which was called from a stack that contains a disabled frame.

When this flag is *not* set, any stack that contains a disabled frame will not be debugged (the execution hook will not be invoked.)

This only applies when the reason for calling the hook would have been TYPE_INTERRUPTED or TYPE_THROW. TYPE_BREAKPOINT, TYPE_DEBUG_REQUESTED, and TYPE_DEBUGGER_KEYWORD always stop, regardless of this setting, as long as the top frame is not disabled.

If HIDE_DISABLED_FRAMES is set, this is effectively set as well.

PRUint32 MASK_TOP_FRAME_ONLY = 32
When this flag is set, object creation will not be tracked. This will reduce the performance price you pay by enabling the debugger.
PRUint32 DISABLE_OBJECT_TRACE = 64

Properties

jsdIExecutionHook* breakpointHook

Called when the engine encounters a breakpoint.

jsdIExecutionHook* debuggerHook

Called when the engine encounters the debugger keyword.

jsdIExecutionHook* debugHook

Called when the errorHook returns false.

jsdIErrorHook* errorHook

Called when an error or warning occurs.

PRUint32 flags

Debugger service flags.

jsdICallHook* functionHook

Called before and after a function is called.

readonly PRUint32 implementationMajor

Major version number of implementation.

readonly PRUint32 implementationMinor

Minor version number of implementation.

readonly char* implementationString

Free form string identifier for implementation.

PRBool initAtStartup

True if the debugger should register an app-start observer in order to begin collecting debug information when mozilla is launched.

jsdIExecutionHook* interruptHook

Called before the next PC is executed.

readonly PRBool isOn

True if the debugger service has been turned on. This does not necessarily mean another app is actively using the service, as the autostart pref may have turned the service on.

readonly JSDContext* JSDContext

readonly PRUint32 pauseDepth

Peek at the current pause depth of the debugger.

jsdIScriptHook* scriptHook

Called when a jsdIScript is created or destroyed.

jsdIExecutionHook* throwHook

Called when an exception is thrown (even if it will be caught.)

jsdICallHook* topLevelHook

Called before and after a toplevel script is evaluated.


Methods

void appendFilter ( jsdIFilter* filter ) void clearAllBreakpoints ( ) void clearFilters ( ) void clearProfileData ( ) PRUint32 enterNestedEventLoop ( jsdINestCallback* callback ) void enumerateContexts ( jsdIContextEnumerator* enumerator ) void enumerateFilters ( jsdIFilterEnumerator* enumerator ) void enumerateScripts ( jsdIScriptEnumerator* enumerator ) PRUint32 exitNestedEventLoop ( ) void GC ( ) void insertFilter ( jsdIFilter* filter , jsdIFilter* after ) void off ( ) void on ( ) [noscript] void onForRuntime ( JSRuntime* rt ) PRUint32 pause ( ) void refreshFilters ( ) void removeFilter ( jsdIFilter* filter ) void swapFilters ( jsdIFilter* filter_a , jsdIFilter* filter_b ) PRUint32 unPause ( ) jsdIValue* wrapValue ( )

void appendFilter ( jsdIFilter* filter )

Same as insertFilter, except always add to the end of the list.

Arguments:
filter

void clearAllBreakpoints ( )

Clear all breakpoints in all scripts.


void clearFilters ( )

Clear the list of filters.


void clearProfileData ( )

Clear profile data for all scripts.


PRUint32 enterNestedEventLoop ( jsdINestCallback* callback )

Push a new network queue, and enter a new UI event loop.

Arguments:
callback: jsdINestCallback instance to be called back after the network queue has been pushed, but before the UI loop starts.
Returns:
depth returns the current number of times the event loop has been nested. your code can use it for sanity checks.

void enumerateContexts ( jsdIContextEnumerator* enumerator )

Enumerate all known contexts.

Arguments:
enumerator

void enumerateFilters ( jsdIFilterEnumerator* enumerator )

Enumerate registered filters. This routine refreshes each filter before passing them on to the enumeration function. Calling this with a null enumerator is equivalent to jsdIService::refreshFilters.

Arguments:
enumerator: jsdIFilterEnumerator instance to be called back for the enumeration.

void enumerateScripts ( jsdIScriptEnumerator* enumerator )

Enumerate all scripts the debugger knows about. Any scripts created before you turned the debugger on, or after turning the debugger off will not be available unless the autostart perf is set.

Arguments:
enumerator: jsdIScriptEnumerator instance to be called back for the enumeration.

PRUint32 exitNestedEventLoop ( )

Exit the current nested event loop after the current iteration completes, and pop the network event queue.

Returns:
depth returns the current number of times the event loop has been nested. your code can use it for sanity checks.

void GC ( )

Force the engine to perform garbage collection.


void insertFilter ( jsdIFilter* filter , jsdIFilter* after )

Adds an execution hook filter. These filters are consulted each time one of the jsdIExecutionHooks is about to be called. Filters are matched in a first in, first compared fashion. The first filter to match determines whether or not the hook is called. Use swapFilter to reorder existing filters, and removeFilter to remove them.

If filter is already present this method throws NS_ERROR_INVALID_ARG.

Arguments:
filter: Object representing the filter to add.
after: Insert |filter| after this one. Pass null to insert at the beginning.

void off ( )

Turn the debugger off. This will invalidate all of your jsdIEphemeral derived objects, and clear all of your breakpoints. In theory you should be able to turn the debugger back on at some later time without any problems.


void on ( )

Turn on the debugger. This function should only be called from JavaScript code. The debugger will be enabled on the runtime the call is made on, as determined by nsIXPCNativeCallContext.


void onForRuntime ( JSRuntime* rt )

Turn on the debugger for a given runtime.

Arguments:
rt: The runtime you want to debug. You cannot turn the debugger on for multiple runtimes.

PRUint32 pause ( )

Temporarily disable the debugger. Hooks will not be called while the debugger is paused. Multiple calls to pause will increase the "pause depth", and equal number of unPause calles must be made to resume normal debugging.

Returns:
depth Number of times pause has been called since the debugger has been unpaused.

void refreshFilters ( )

Force the debugger to resync its internal filter cache with the actual values in the jsdIFilter objects. To refresh a single filter use jsdIService::swapFilters. This method is equivalent to jsdIService::enumerateFilters with a null enumerator.


void removeFilter ( jsdIFilter* filter )

Remove a filter.

If filter is not present this method throws NS_ERROR_INVALID_ARG.

Arguments:
filter: Object representing the filter to remove. Must be the exact object passed to addFilter, not just a new object with the same properties.

void swapFilters ( jsdIFilter* filter_a , jsdIFilter* filter_b )

Swap position of two filters.

If filter_a is not present, this method throws NS_ERROR_INVALID_ARG. If filter_b is not present, filter_a is replaced by filter_b. If filter_a == filter_b, then filter is refreshed.

Arguments:
filter_a
filter_b

PRUint32 unPause ( )

Undo a pause.

Returns:
depth The number of remaining pending pause calls.

jsdIValue* wrapValue ( )

When called from JavaScript, this method returns the jsdIValue wrapper for the given value. If a wrapper does not exist one will be created. When called from another language this method returns an xpconnect defined error code.

Reference documentation is generated from Mozilla's source.

Add a note User Contributed Notes
No comments available

Copyright © 1999 - 2005 XULPlanet.com