IRISLIB database
XDebugAgent Class Reference

This class serves as a debug agent for debugging processes. More...

Inheritance diagram for XDebugAgent:
Collaboration diagram for XDebugAgent:

Public Member Functions

_.Library.Status Attach ()
 Utility method to attach to the target process.
 
_.Library.Status AttachCSP ()
 Utility method to attach to a CSP process.
 
_.Library.String CreateErrorResponse (_.Library.String pCmd, _.Library.Integer pErrorCode, _.Library.Integer pTransactionId, _.Library.String pMsg)
 Create an error response including error code and message to be displayed by IDE.
 
_.Library.Status CreateEvalPropertyResponse (_.Library.String pVarName, _.Library.String pVarValue, _.Library.String pXML, _.Library.Integer pCurrentDepth)
 Given a variable name and a value, create a property for reporting the response to an eval command to the IDE.
 
_.Library.Status CreatePropertyResponse (_.Library.String pVarName, _.Library.String pVarValue, _.Library.String pXML, _.Library.Boolean pGetChildren, _.Library.Integer pCurrentDepth)
 Given a variable name and a value, create a property for reporting to the IDE. More...
 
 FlushOutput ()
 Flush output before breaking the connection.
 
_.Library.Status GetClassProperties (_.Library.String pPropList)
 Get the properties for the CLASS context.
 
_.Library.Status GetInitMsg (pInitMsg)
 Get InitMsg.
 
_.Library.Status GetStackProperties (_.Library.Integer pContext, _.Library.Integer pServerLevel, _.Library.String pPropList)
 Given a context (Private,Public) and stack level, get the variables defined at that level.
 
 InitTrace ()
 Intialize the trace (if required)
 
_.Library.Status Launch ()
 Utility method to launch the target given the properties set by set_feature.
 
_.Library.Status MapCommandToHandler (_.Library.String pCmdString)
 Map the command to the associated handler (assumes valid command) More...
 
_.Library.Status OnPreServer ()
 Event handler for the PreServer event: this is invoked before. More...
 
_.Library.Status ParseCommand (_.Library.String pCmdString, pParsed)
 Parse XDebug command. More...
 
_.Library.Status ReportEvent (_.Library.String pEvent, pXmlData)
 Report an event by writing to the WebSocket.
 
_.Library.Status Server ()
 The WebSocket Server.
 
_.Library.Status TidyUp (pStatus)
 Here we do state specific tidy up (will be called if an error has occurred)
 
 Trace (_.Library.String pMsg)
 Log a trace if tracing enabled.
 
_.Library.Status break ()
 IDE Command handler for 'break' command.
 
_.Library.Status breakpoint_get ()
 breakpoint_get -d User.Debug.cls:DebugMe:3 -i 51"
 
_.Library.Status breakpoint_list ()
 breakpoint_list
 
_.Library.Status breakpoint_remove ()
 breakpoint_remove
 
_.Library.Status breakpoint_set ()
 IDE Command handler for 'breakpoint_set' command. More...
 
_.Library.Status breakpoint_update ()
 breakpoint_update
 
_.Library.Status context_get ()
 IDE Command handler for 'context_get' command.
 
_.Library.Status context_names ()
 IDE Command handler for 'context_names' command.
 
 detach ()
 IDE Command handler for 'detach' command.
 
_.Library.Status eval ()
 IDE Command handler for 'eval' command.
 
_.Library.Status feature_get ()
 IDE Command handler for 'feature_get' command.
 
_.Library.Status feature_set ()
 IDE Command handler for 'feature_set' command.
 
_.Library.Status property_get ()
 IDE Command handler for 'property_get' command.
 
_.Library.Status property_set ()
 IDE Command handler for 'property_set' command.
 
_.Library.Status property_value ()
 IDE Command handler for 'property_value' command.
 
_.Library.Status run ()
 IDE Command handler for 'run' command.
 
_.Library.Status stack_get ()
 IDE Command handler for 'stack_get' command.
 
_.Library.Status stdin ()
 IDE Command handler for 'stdin' command.
 
_.Library.Status step_into ()
 IDE Command handler for 'step_into' command.
 
_.Library.Status step_out ()
 IDE Command handler for 'step_over' command.
 
_.Library.Status step_over ()
 IDE Command handler for 'step_over' command.
 
 stop ()
 IDE Command handler for 'stop' command.
 
_.Library.Status watchpoint_set ()
 IDE (pseudo) Command handler for 'watchpoint_set' command. More...
 
- Public Member Functions inherited from WebSocket
_.Library.Status EndServer ()
 Gracefully terminate the WebSocket Server.
 
_.Library.Status Initialize (_.Library.String WebSocketID, _.Library.String GWClientAddress)
 Internal method to initialize the WebSocket Class.
 
_.Library.Status InitializeServer ()
 Internal method to initialize the WebSocket Server.
 
_.Library.Status OnClientMessage (_.Library.String data, _.Library.Integer close)
 Event handler for the ClientMessage event: this method is only relevant to. More...
 
_.Library.Status OnPostServer ()
 Event handler for the PostServer event: this is invoked after. More...
 
_.Library.Status OpenServer (_.Library.String WebSocketID)
 Method to open an existing WebSocket Server. More...
 
_.Library.String Read (_.Library.Integer len, _.Library.Status sc, _.Library.Integer timeout)
 Reads up to len characters from the client. More...
 
_.Library.Status Write (_.Library.String data)
 Write to the client.
 
- Public Member Functions inherited from RegisteredObject
_.Library.Status OnAddToSaveSet (_.Library.Integer depth, _.Library.Integer insert, _.Library.Integer callcount)
 This callback method is invoked when the current object is added to the SaveSet,. More...
 
_.Library.Status OnClose ()
 This callback method is invoked by the <METHOD>Close</METHOD> method to. More...
 
_.Library.Status OnConstructClone (_.Library.RegisteredObject object, _.Library.Boolean deep, _.Library.String cloned)
 This callback method is invoked by the <METHOD>ConstructClone</METHOD> method to. More...
 
_.Library.Status OnNew ()
 This callback method is invoked by the <METHOD>New</METHOD> method to. More...
 
_.Library.Status OnValidateObject ()
 This callback method is invoked by the <METHOD>ValidateObject</METHOD> method to. More...
 

Static Public Member Functions

 GetClientPosFromDebugPos (pServerIntPos, pMapped, pNameSpace, pDocName, pLabel, pOffset)
 This method is given the debugger position (in the INT code) and returns a logical docname,label and offset. More...
 
_.Library.String Interpolate (pString, pTerm, pValue)
 Utility method to interpolate values in a string.
 
_.Library.String requote (_.Library.String value)
 Given a string that is the output of Quote(), check for control characters that were. More...
 
- Static Public Member Functions inherited from Page
_.Library.Status ConvertParameter (_.Library.String url, _.Library.String name, _.Library.String value)
 You pass this the <parameter>url</parameter> of the page you are going to and a. More...
 
_.Library.Binary Decrypt (_.Library.String data)
 Decrypts the input string using the session.Key value that is unique to. More...
 
_.Library.String Encrypt (_.Library.Binary data)
 Encrypts the input string using the session.Key value that is unique to this. More...
 
_.Library.String EscapeHTML (in)
 This method converts input HTML text into Escaped HTML text.
 
_.Library.String EscapeURL (_.Library.String in, _.Library.String charset)
 This method converts the in input URL string into Escaped URL string. More...
 
_.Library.String HyperEventCall (_.Library.String methodName, _.Library.String args, _.Library.Integer type, _.Library.Boolean mobile)
 This method returns the string that needs to be written to the current. More...
 
_.Library.String HyperEventHead (_.Library.Boolean iframeOnly, _.Library.Boolean strict, _.Library.Boolean optionalBroker)
 This method returns the string that needs to be written to the current. More...
 
 Include (_.Library.String url)
 Include another csp page or file in the output at this point. More...
 
_.Library.String InsertHiddenField (_.Library.String url, _.Library.String name, _.Library.String value, _.Library.String extra)
 Inserts a '<input type="hidden" name="Name" value="Value">' tag into the current document. More...
 
_.Library.String InsertHiddenFields (_.Library.String url, _.Library.String query)
 Return the string containing the hidden form tags. More...
 
_.Library.Boolean IsPrivate ()
 Returns 1 if this page is in fact a private page (see <parameter>PRIVATE</parameter>).
 
_.Library.String Link (_.Library.String link, _.Library.String query, _.Library.Boolean addQ)
 Tranforms the link specified by link into a URL and returns it as a string. More...
 
_.Library.Status OnHTTPHeader (_.Library.Boolean OutputBody)
 Event handler for PAGE event: this is invoked in order to
More...
 
_.Library.Status OnPage ()
 Event handler for PAGE event: this is invoked in order to
More...
 
 OnPageError (_.Library.Status sc)
 Event handler for any error that occurs on the page. More...
 
 OnPostHTTP ()
 Event handler for POSTPAGE event: this is invoked after the data. More...
 
_.Library.Status OnPostHyperEvent (_.Library.String class, _.Library.String method)
 Event handler which is invoked after a hyperevent method is called on this page.
 
_.Library.Boolean OnPreHTTP ()
 Event handler for PreHTTP event: this is invoked before. More...
 
_.Library.Status OnPreHyperEvent (_.Library.String class, _.Library.String method)
 Event handler which is invoked before a hyperevent method is called on this page. More...
 
_.Library.Status Page (_.Library.Boolean skipheader)
 Process a request to serve a CSPPage. More...
 
_.Library.String QuoteJS (in)
 This method converts input string into quoted JavaScript literal.
 
_.Library.String RewriteURL (_.Library.String url)
 This method will rewrite a URL to use #url()# if needed.
 
 ShowError (_.Library.Status sc)
 Display a <class>Status</class> error code to the CSP Page.
 
 StartTimer (_.Library.String name)
 Used to get performance information on your CSP pages. More...
 
 StopTimer (_.Library.String name)
 Used to time performance information on your CSP pages. More...
 
 ThrowError (_.Library.Status sc)
 Passed a <class>Status</class> code this goes to the error page passing this status code.
 
_.Library.String UnescapeHTML (in)
 This method converts Escaped HTML text into normal HTML text.
 
_.Library.String UnescapeURL (_.Library.String in, _.Library.String charset)
 This method converts the in Escaped URL string back to its original form. More...
 

Public Attributes

 Attached
 This holds the attached flag. More...
 
 BreakPoints
 Breakpoints. More...
 
 CSPId
 SessionId if attached to a CSP process. More...
 
 Command
 This holds the current command. More...
 
 ContinuationCmdIssued
 This holds the Continuation command issued flag. More...
 
 Debug
 This holds the debugger instance. More...
 
 DebugTarget
 This holds the debug_target (passsed to us by set_feature) More...
 
 DeviceList
 This holds the device list for $System.Socket.Select. More...
 
 Features
 This holds the values of the features set by the IDE. More...
 
 FirstRunCommandSeen
 This holds the first run command flag. More...
 
 LastContinuationCmd
 This holds the last 'continuation' command issued. More...
 
 NextState
 This holds the next state to switch to. More...
 
 StackLevelMappings
 This holds the mappings from server stack level to IDE stack level. More...
 
 StartedAttach
 This says we started via Attach instead of Launch. More...
 
 TargetOrPID
 This holds the target OR PID. More...
 
 Trace
 This holds the TRACE flag. More...
 
 TraceNode
 This holds the TRACE global node for this session. More...
 
 TransactionId
 This holds the current transaction identifier. More...
 
 WebSocketDevice
 This holds the websocket device. More...
 
- Public Attributes inherited from WebSocket
 AtEnd
 The AtEnd property is set to true (1) when, during a read,. More...
 
 BinaryData
 This property determines whether the data streams transmitted between the client and server should be treated as binary. More...
 
 GWClientAddress
 The address through which a WebSocket operating asynchronously (<property>SharedConnection=1</property>) can communicate with the hosting CSP Gateway. More...
 
 NoDataFraming
 This property determines whether formal data framing should occur between the Web Gateway and InterSystems IRIS. More...
 
 SessionEndOnClose
 This property determines whether WebSocket closure forces the associated CSP session to end. More...
 
 SessionId
 The CSP Session ID from which this WebSocket was created. More...
 
 SharedConnection
 This property determines whether the communication between the client and WebSocket server should be over a dedicated Gateway. More...
 
 WebSocketID
 The unique identity of this WebSocket. More...
 

Static Public Attributes

 CLASS = None
 This is the CLASS context for variable display in the IDE.
 
 DOMAIN = None
 Parameter for Localization.
 
 DefaultMaxDepth = None
 The default value to use for the "max_depth" feature if it wasn't set by the IDE.
 
 PRIVATE = None
 This is the PRIVATE context for variable display in the IDE.
 
 PUBLIC = None
 This is the PUBLIC context for variable display in the IDE.
 
 SECURITYRESOURCE = None
 Require development resource.
 
- Static Public Attributes inherited from WebSocket
 NOCHARSETCONVERT = None
 The <CLASS>CSP.WebSocket</CLASS> object serves as an event handler for communication between client and server using the WebSocket protocol (RFC 6455). More...
 
- Static Public Attributes inherited from RegisteredObject
 CAPTION = None
 Optional name used by the Form Wizard for a class when generating forms. More...
 
 JAVATYPE = None
 The Java type to be used when exported.
 
 PROPERTYVALIDATION = None
 This parameter controls the default validation behavior for the object. More...
 
- Static Public Attributes inherited from Page
 CHARSET = None
 The <CLASS>CSP.Page</CLASS> object serves as an event handler for CSP requests. More...
 
 CONTENTTYPE = None
 Specifies the default content type for the page. More...
 
 CONVERTINPUTSTREAM = None
 Specifies if input request.Content or request.MimeData values are converted from their. More...
 
 CSPFILE = None
 If this page was compiled from a .csp file, then this parameter contains the. More...
 
 CSPSTRICT = None
 The CSPSTRICT parameter is set to 1, if the DOCTYPE indicates that this. More...
 
 CSPURL = None
 This parameter is used to make sure that if multiple. More...
 
 CSPXHTML = None
 The CSPXHTML parameter is set to 1, if the DOCTYPE indicates that this. More...
 
 DOMAIN = None
 The default domain for csp:text, span and div tags. More...
 
 ENCODED = None
 Controls how the query parameters for this page are passed, it can. More...
 
 ERRORPAGE = None
 Specify a custom error page to call if there are any problems with generating this page. More...
 
 EXPIRES = None
 Specified the default value for the response.Expires. More...
 
 NOCHARSETCONVERT = None
 Specifies if we wish to turn off charset conversion for this page. More...
 
 PAGETIMING = None
 If this parameter is true then we automatically record timing statistics of how long it takes to. More...
 
 PRIVATE = None
 Controls the access to the page, it can be set to one of the following:
More...
 
 SECURITYRESOURCE = None
 This is a comma-delimited list of system Resources and associated. More...
 
 TIMINGSLOTS = None
 Used by the timing to decide how many slots a day should be divided up into. More...
 
 UseSession = None
 This parameter controls the CSP session support. More...
 

Detailed Description

This class serves as a debug agent for debugging processes.

It receives client debugging commands, sends then to the debug target, gets responses, and sends them back to the client.

The implementation is based on the XDEBUG DBGP protocol used by the eclipse DLTK.
http://xdebug.org/docs-dbgp.php

Member Function Documentation

◆ CreatePropertyResponse()

_.Library.Status CreatePropertyResponse ( _.Library.String  pVarName,
_.Library.String  pVarValue,
_.Library.String  pXML,
_.Library.Boolean  pGetChildren,
_.Library.Integer  pCurrentDepth 
)

Given a variable name and a value, create a property for reporting to the IDE.

If pGetChildren is set, also send the children of this variable. Used by property_get

◆ GetClientPosFromDebugPos()

GetClientPosFromDebugPos (   pServerIntPos,
  pMapped,
  pNameSpace,
  pDocName,
  pLabel,
  pOffset 
)
static

This method is given the debugger position (in the INT code) and returns a logical docname,label and offset.

The client will have to perform addtional logic to find exactly where in the source document the location is If pMapped is 0, then there is no source

◆ MapCommandToHandler()

_.Library.Status MapCommandToHandler ( _.Library.String  pCmdString)

Map the command to the associated handler (assumes valid command)

Some commands are handled inline

◆ OnPreServer()

_.Library.Status OnPreServer ( )

Event handler for the PreServer event: this is invoked before.

starting the WebSockets Server. Changes to the <property>SharedConnection</property> flag must be made here.

Reimplemented from WebSocket.

◆ ParseCommand()

_.Library.Status ParseCommand ( _.Library.String  pCmdString,
  pParsed 
)

Parse XDebug command.

Definition:-

cmd     :   cmdname [ arglist ];
cmdname :   lowercase STRING
arglist :   arg | [ arg arglist ];
arg     :   argid argval
argid   :   '-' CHAR
argval  :   STRING

Example:- 

feature_get -i 6 -n language_supports_threads

The command string is parsed into this structure:-

var="feature_get"
var("-i")=6
var("-n")="language_supports_threads"

◆ breakpoint_set()

_.Library.Status breakpoint_set ( )

IDE Command handler for 'breakpoint_set' command.

breakpoint_set -m DebugMe -n 3 -r 0 -s enabled -t line -f dbgp://|USER|User.Debug.cls -i 10"

◆ requote()

_.Library.String requote ( _.Library.String  value)
static

Given a string that is the output of Quote(), check for control characters that were.

left inside a quoted literal. If found, Quote that literal and insert it back into the original string. This is done carefully so we don't end up with double-double quotes.

◆ watchpoint_set()

_.Library.Status watchpoint_set ( )

IDE (pseudo) Command handler for 'watchpoint_set' command.

breakpoint_set -m DebugMe -n 2 -r 0 -s enabled -t watch -f dbgp://|USER|User.Debug.cls -i 22 – WA==

Member Data Documentation

◆ Attached

Attached

This holds the attached flag.

 

◆ BreakPoints

BreakPoints

Breakpoints.

 

◆ CSPId

CSPId

SessionId if attached to a CSP process.

 

◆ Command

Command

This holds the current command.

 

◆ ContinuationCmdIssued

ContinuationCmdIssued

This holds the Continuation command issued flag.

 

◆ Debug

Debug

This holds the debugger instance.

 

◆ DebugTarget

DebugTarget

This holds the debug_target (passsed to us by set_feature)

 

◆ DeviceList

DeviceList

This holds the device list for $System.Socket.Select.

 

◆ Features

Features

This holds the values of the features set by the IDE.

 

◆ FirstRunCommandSeen

FirstRunCommandSeen

This holds the first run command flag.

 

◆ LastContinuationCmd

LastContinuationCmd

This holds the last 'continuation' command issued.

Continuation commands are 'run','step_into','step_over','step_out' 'stop' and 'detach'. We need to record this so that the appropriate status message can be reported to the client when a breakpoint is hit or the program ends.  

◆ NextState

NextState

This holds the next state to switch to.

 

◆ StackLevelMappings

StackLevelMappings

This holds the mappings from server stack level to IDE stack level.

 

◆ StartedAttach

StartedAttach

This says we started via Attach instead of Launch.

 

◆ TargetOrPID

TargetOrPID

This holds the target OR PID.

 

◆ Trace

Trace

This holds the TRACE flag.

 

◆ TraceNode

TraceNode

This holds the TRACE global node for this session.

 

◆ TransactionId

TransactionId

This holds the current transaction identifier.

 

◆ WebSocketDevice

WebSocketDevice

This holds the websocket device.