package google.devtools.clouddebugger.v2

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

service Controller2

controller.proto:53

The Controller service provides the API for orchestrating a collection of debugger agents to perform debugging tasks. These agents are each attached to a process of an application which may include one or more replicas. The debugger agents register with the Controller to identify the application being debugged, the Debuggee. All agents that register with the same data, represent the same Debuggee, and are assigned the same `debuggee_id`. The debugger agents call the Controller to retrieve the list of active Breakpoints. Agents with the same `debuggee_id` get the same breakpoints list. An agent that can fulfill the breakpoint request updates the Controller with the breakpoint result. The controller selects the first result received and discards the rest of the results. Agents that poll again for active breakpoints will no longer have the completed breakpoint in the list and should remove that breakpoint from their attached process. The Controller service does not provide a way to retrieve the results of a completed breakpoint. This functionality is available using the Debugger service.

service Debugger2

debugger.proto:45

The Debugger service provides the API that allows users to collect run-time information from a running application, without stopping or slowing it down and without modifying its state. An application may include one or more replicated processes performing the same work. A debugged application is represented using the Debuggee concept. The Debugger service provides a way to query for available debuggees, but does not provide a way to create one. A debuggee is created using the Controller service, usually by running a debugger agent with the application. The Debugger service enables the client to set one or more Breakpoints on a Debuggee and collect the results of the set Breakpoints.

message Breakpoint

data.proto:274

Represents the breakpoint specification, status and results.

Used in: GetBreakpointResponse, ListActiveBreakpointsResponse, ListBreakpointsResponse, SetBreakpointRequest, SetBreakpointResponse, UpdateActiveBreakpointRequest

enum Breakpoint.Action

data.proto:277

Actions that can be taken when a breakpoint hits. Agents should reject breakpoints with unsupported or unknown action values.

Used in: Breakpoint, ListBreakpointsRequest.BreakpointActionValue

enum Breakpoint.LogLevel

data.proto:289

Log severity levels.

Used in: Breakpoint

message Debuggee

data.proto:402

Represents the debugged application. The application may include one or more replicated processes executing the same code. Each of these processes is attached with a debugger agent, carrying out the debugging commands. Agents attached to the same debuggee identify themselves as such by using exactly the same Debuggee message value when registering.

Used in: ListDebuggeesResponse, RegisterDebuggeeRequest, RegisterDebuggeeResponse

message FormatMessage

data.proto:34

Represents a message with parameters.

Used in: StatusMessage

message ListBreakpointsRequest.BreakpointActionValue

debugger.proto:151

Wrapper message for `Breakpoint.Action`. Defines a filter on the action field of breakpoints.

Used in: ListBreakpointsRequest

message SourceLocation

data.proto:91

Represents a location in the source code.

Used in: Breakpoint, StackFrame

message StackFrame

data.proto:257

Represents a stack frame context.

Used in: Breakpoint

message StatusMessage

data.proto:55

Represents a contextual status message. The message can indicate an error or informational status, and refer to specific parts of the containing object. For example, the `Breakpoint.status` field can indicate an error referring to the `BREAKPOINT_SOURCE_LOCATION` with the message `Location not found`.

Used in: Breakpoint, Debuggee, Variable

enum StatusMessage.Reference

data.proto:57

Enumerates references to which the message applies.

Used in: StatusMessage

message Variable

data.proto:213

Represents a variable or an argument possibly of a compound object type. Note how the following variables are represented: 1) A simple variable: int x = 5 { name: "x", value: "5", type: "int" } // Captured variable 2) A compound object: struct T { int m1; int m2; }; T x = { 3, 7 }; { // Captured variable name: "x", type: "T", members { name: "m1", value: "3", type: "int" }, members { name: "m2", value: "7", type: "int" } } 3) A pointer where the pointee was captured: T x = { 3, 7 }; T* p = &x; { // Captured variable name: "p", type: "T*", value: "0x00500500", members { name: "m1", value: "3", type: "int" }, members { name: "m2", value: "7", type: "int" } } 4) A pointer where the pointee was not captured: T* p = new T; { // Captured variable name: "p", type: "T*", value: "0x00400400" status { is_error: true, description { format: "unavailable" } } } The status should describe the reason for the missing value, such as `<optimized out>`, `<inaccessible>`, `<pointers limit reached>`. Note that a null pointer should not have members. 5) An unnamed value: int* p = new int(7); { // Captured variable name: "p", value: "0x00500500", type: "int*", members { value: "7", type: "int" } } 6) An unnamed pointer where the pointee was not captured: int* p = new int(7); int** pp = &p; { // Captured variable name: "pp", value: "0x00500500", type: "int**", members { value: "0x00400400", type: "int*" status { is_error: true, description: { format: "unavailable" } } } } } To optimize computation, memory and network traffic, variables that repeat in the output multiple times can be stored once in a shared variable table and be referenced using the `var_table_index` field. The variables stored in the shared table are nameless and are essentially a partition of the complete variable. To reconstruct the complete variable, merge the referencing variable with the referenced variable. When using the shared variable table, the following variables: T x = { 3, 7 }; T* p = &x; T& r = x; { name: "x", var_table_index: 3, type: "T" } // Captured variables { name: "p", value "0x00500500", type="T*", var_table_index: 3 } { name: "r", type="T&", var_table_index: 3 } { // Shared variable table entry #3: members { name: "m1", value: "3", type: "int" }, members { name: "m2", value: "7", type: "int" } } Note that the pointer address is stored with the referencing variable and not with the referenced variable. This allows the referenced variable to be shared between pointers and references. The type field is optional. The debugger agent may or may not support it.

Used in: Breakpoint, StackFrame