google-cloud-debugger - Class Google::Cloud::Debugger::Breakpoint::Variable (v0.42.2)

Reference documentation and code samples for the google-cloud-debugger class Google::Cloud::Debugger::Breakpoint::Variable.

Variable

Represents a variable or an argument possibly of a compound object type. Note how the following variables are represented:

A simple Variable: ruby x = 5 # Captured variable: # { name: "x", value: "5", type: "Integer" }

A Compound Variable: ruby class T attr_accessor :m1, :m2 ... end v = T.new(1, "2") # Captured variable: # { # name: "v", # type: "T", # members: [ # { name: "@m1", value: "1", type: "Integer" }, # { name: "@m2", value: "2", type: "String" } # ] # }

A Hash object: ruby hash = { a: 1, b: :two } # Captured variable: # { # name: "hash", # type: "Hash", # members: [ # { name: "a", value: "1", type: "Integer" }, # { name: "b", value: ":2", type: "Symbol" } # ] # }

An Array object: ruby ary = [1, nil] # Captured variable: # { # name: "ary", # type: "Array", # members: [ # { name: "[0]", value: "1", type: "Integer" }, # { name: "[1]", value: "nil", type: "NilClass" } # ] # }

Inherits

  • Object

Methods

.from_rb_var

def self.from_rb_var(source, name: nil, depth: MAX_DEPTH, var_table: nil, limit: nil) -> Google::Cloud::Debugger::Breakpoint::Variable

Convert a Ruby variable into a Google::Cloud::Debugger::Breakpoint::Variable object. If a variable table is provided, it will store all the subsequently created compound variables into the variable table for sharing.

Parameters
  • source (Any) — Source Ruby variable to convert from
  • name (String) (defaults to: nil) — Name of the varaible
  • depth (Integer) (defaults to: MAX_DEPTH) — Number of levels to evaluate in compound variables. Default to MAX_DEPTH
  • var_table (Breakpoint::VariableTable) (defaults to: nil) — A variable table to store shared compound variables. Optional.
  • limit (Integer) (defaults to: nil) — Maximum number of bytes this conversion should take. This include nested compound member variables' conversions.
Returns
Examples

Simple variable conversion

x = 3.0
var = Google::Cloud::Debugger::Breakpoint::Variable.from_rb_var \
        x, name: "x"
var.name  #=> "x"
var.value #=> "3.0"
var.type  #=> "Float"

Hash conversion

hash = {a: 1.0, b: :two}
var = Google::Cloud::Debugger::Breakpoint::Variable.from_rb_var \
        hash, name: "hash"
var.name  #=> "hash"
var.type  #=> "Hash"
var.members[0].name  #=> "a"
var.members[0].value #=> "1.0"
var.members[0].type  #=> "Float"
var.members[1].name  #=> "b"
var.members[1].value #=> ":two"
var.members[1].type  #=> "Symbol"

Custom compound variable conversion

foo = Foo.new(a: 1.0, b: [])
foo.inspect  #=> "#<Foo:0xXXXXXX @a=1.0, @b=[]>"
var = Google::Cloud::Debugger::Breakpoint::Variable.from_rb_var \
        foo, name: "foo"
var.name  #=> "foo"
var.type  #=> "Foo"
var.members[0].name  #=> "@a"
var.members[0].value #=> "1.0"
var.members[0].type  #=> "Float"
var.members[1].name  #=> "@b"
var.members[1].value #=> "[]"
var.members[1].type  #=> "Array"

Use variable table for shared compound variables

hash = {a: 1.0}
ary = [hash, hash]
var_table = Google::Cloud::Debugger::Breakpoint::VariableTable.new
var = Google::Cloud::Debugger::Breakpoint::Variable.from_rb_var \
        ary, name: "ary", var_table: var_table
var.name            #=> "ary"
var.var_table_index #=> 0
var_table[0].type   #=> "Array"
var_table[0].members[0].name            #=> "[0]"
var_table[0].members[0].var_table_index #=> 1
var_table[0].members[1].name            #=> "[1]"
var_table[0].members[1].var_table_index #=> 1
var_table[1].type #=> "Hash"
var_table[1].members[0].name #=> "a"
var_table[1].members[0].type #=> "Float"
var_table[1].members[0].value #=> "1.0"

#payload_size

def payload_size() -> Integer

Calculate the bytesize of all the attributes and that of the member variables.

Returns
  • (Integer) — The total payload size of this variable in bytes.

#set_error_state

def set_error_state(message, refers_to: StatusMessage::VARIABLE_VALUE)

Set this variable to an error state by setting the status field

#to_grpc

def to_grpc()

Exports the Variable to a Google::Cloud::Debugger::V2::Variable object.

#total_size

def total_size() -> Integer

Calculate the total bytesize of all the attributes and that of the member variables, plus references into other variables in the variable table.

Returns
  • (Integer) — The total payload size of this variable in bytes.

Constants

MAX_DEPTH

value: 3
Max depth to convert on compound variables

MAX_MEMBERS

value: 1000
Max number of member variables to evaluate in compound variables

MAX_STRING_LENGTH

value: 500
Max length on variable inspect results. Truncate extra and replace with ellipsis.