class Google::Apis::ClouddebuggerV2::Variable

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 “, “, “ . 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.

Attributes

members[RW]

Members contained or pointed to by the variable. Corresponds to the JSON property `members` @return [Array<Google::Apis::ClouddebuggerV2::Variable>]

name[RW]

Name of the variable, if any. Corresponds to the JSON property `name` @return [String]

status[RW]

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`. Corresponds to the JSON property `status` @return [Google::Apis::ClouddebuggerV2::StatusMessage]

type[RW]

Variable type (e.g. `MyClass`). If the variable is split with `var_table_index` , `type` goes next to `value`. The interpretation of a type is agent specific. It is recommended to include the dynamic type rather than a static type of an object. Corresponds to the JSON property `type` @return [String]

value[RW]

Simple value of the variable. Corresponds to the JSON property `value` @return [String]

var_table_index[RW]

Reference to a variable in the shared variable table. More than one variable can reference the same variable in the table. The `var_table_index` field is an index into `variable_table` in Breakpoint. Corresponds to the JSON property `varTableIndex` @return [Fixnum]

Public Class Methods

new(**args) click to toggle source
# File lib/google/apis/clouddebugger_v2/classes.rb, line 1038
def initialize(**args)
   update!(**args)
end

Public Instance Methods

update!(**args) click to toggle source

Update properties of this object

# File lib/google/apis/clouddebugger_v2/classes.rb, line 1043
def update!(**args)
  @members = args[:members] if args.key?(:members)
  @name = args[:name] if args.key?(:name)
  @status = args[:status] if args.key?(:status)
  @type = args[:type] if args.key?(:type)
  @value = args[:value] if args.key?(:value)
  @var_table_index = args[:var_table_index] if args.key?(:var_table_index)
end