google-cloud-debugger 0.36.1 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +47 -0
- data/CONTRIBUTING.md +4 -4
- data/LOGGING.md +1 -1
- data/OVERVIEW.md +28 -59
- data/TROUBLESHOOTING.md +2 -8
- data/ext/google/cloud/debugger/debugger_c/tracer.c +8 -33
- data/lib/google-cloud-debugger.rb +14 -15
- data/lib/google/cloud/debugger.rb +18 -16
- data/lib/google/cloud/debugger/agent.rb +4 -1
- data/lib/google/cloud/debugger/breakpoint.rb +9 -9
- data/lib/google/cloud/debugger/breakpoint/evaluator.rb +19 -25
- data/lib/google/cloud/debugger/breakpoint/source_location.rb +6 -6
- data/lib/google/cloud/debugger/breakpoint/stack_frame.rb +5 -5
- data/lib/google/cloud/debugger/breakpoint/status_message.rb +4 -6
- data/lib/google/cloud/debugger/breakpoint/variable.rb +8 -11
- data/lib/google/cloud/debugger/breakpoint/variable_table.rb +1 -1
- data/lib/google/cloud/debugger/credentials.rb +9 -6
- data/lib/google/cloud/debugger/debuggee.rb +4 -4
- data/lib/google/cloud/debugger/middleware.rb +1 -1
- data/lib/google/cloud/debugger/rails.rb +2 -2
- data/lib/google/cloud/debugger/service.rb +28 -66
- data/lib/google/cloud/debugger/snappoint.rb +4 -7
- data/lib/google/cloud/debugger/transmitter.rb +1 -1
- data/lib/google/cloud/debugger/version.rb +1 -1
- metadata +14 -72
- data/lib/google/cloud/debugger/v2.rb +0 -243
- data/lib/google/cloud/debugger/v2/controller2_client.rb +0 -373
- data/lib/google/cloud/debugger/v2/controller2_client_config.json +0 -41
- data/lib/google/cloud/debugger/v2/credentials.rb +0 -42
- data/lib/google/cloud/debugger/v2/debugger2_client.rb +0 -481
- data/lib/google/cloud/debugger/v2/debugger2_client_config.json +0 -51
- data/lib/google/cloud/debugger/v2/doc/google/devtools/clouddebugger/v2/controller.rb +0 -91
- data/lib/google/cloud/debugger/v2/doc/google/devtools/clouddebugger/v2/data.rb +0 -443
- data/lib/google/cloud/debugger/v2/doc/google/devtools/clouddebugger/v2/debugger.rb +0 -151
- data/lib/google/cloud/debugger/v2/doc/google/devtools/source/v1/source_context.rb +0 -162
- data/lib/google/cloud/debugger/v2/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/debugger/v2/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/devtools/clouddebugger/v2/controller_pb.rb +0 -50
- data/lib/google/devtools/clouddebugger/v2/controller_services_pb.rb +0 -98
- data/lib/google/devtools/clouddebugger/v2/data_pb.rb +0 -108
- data/lib/google/devtools/clouddebugger/v2/debugger_pb.rb +0 -77
- data/lib/google/devtools/clouddebugger/v2/debugger_services_pb.rb +0 -66
- data/lib/google/devtools/source/v1/source_context_pb.rb +0 -90
@@ -67,8 +67,6 @@ module Google
|
|
67
67
|
# * `https://www.googleapis.com/auth/logging.admin`
|
68
68
|
#
|
69
69
|
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
70
|
-
# @param [Hash] client_config A hash of values to override the default
|
71
|
-
# behavior of the API client. Optional.
|
72
70
|
# @param [String] endpoint Override of the endpoint host name. Optional.
|
73
71
|
# If the param is nil, uses the default endpoint.
|
74
72
|
# @param [String] project Project identifier for the Stackdriver Debugger
|
@@ -84,15 +82,20 @@ module Google
|
|
84
82
|
# debugger = Google::Cloud::Debugger.new
|
85
83
|
# debugger.start
|
86
84
|
#
|
87
|
-
def self.new project_id: nil,
|
88
|
-
|
89
|
-
|
85
|
+
def self.new project_id: nil,
|
86
|
+
credentials: nil,
|
87
|
+
service_name: nil,
|
88
|
+
service_version: nil,
|
89
|
+
scope: nil,
|
90
|
+
timeout: nil,
|
91
|
+
endpoint: nil,
|
92
|
+
project: nil,
|
93
|
+
keyfile: nil
|
90
94
|
project_id ||= (project || default_project_id)
|
91
95
|
service_name ||= default_service_name
|
92
96
|
service_version ||= default_service_version
|
93
97
|
scope ||= configure.scope
|
94
98
|
timeout ||= configure.timeout
|
95
|
-
client_config ||= configure.client_config
|
96
99
|
endpoint ||= configure.endpoint
|
97
100
|
|
98
101
|
service_name = service_name.to_s
|
@@ -114,14 +117,8 @@ module Google
|
|
114
117
|
project_id = project_id.to_s # Always cast to a string
|
115
118
|
raise ArgumentError, "project_id is missing" if project_id.empty?
|
116
119
|
|
117
|
-
Debugger::
|
118
|
-
|
119
|
-
project_id, credentials,
|
120
|
-
host: endpoint, timeout: timeout, client_config: client_config
|
121
|
-
),
|
122
|
-
service_name: service_name,
|
123
|
-
service_version: service_version
|
124
|
-
)
|
120
|
+
service = Debugger::Service.new project_id, credentials, host: endpoint, timeout: timeout
|
121
|
+
Debugger::Project.new service, service_name: service_name, service_version: service_version
|
125
122
|
end
|
126
123
|
|
127
124
|
# rubocop:enable all
|
@@ -147,8 +144,6 @@ module Google
|
|
147
144
|
# * `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling
|
148
145
|
# the set of resources and operations that the connection can access.
|
149
146
|
# * `timeout` - (Integer) Default timeout to use in requests.
|
150
|
-
# * `client_config` - (Hash) A hash of values to override the default
|
151
|
-
# behavior of the API client.
|
152
147
|
# * `endpoint` - (String) Override of the endpoint host name, or `nil`
|
153
148
|
# to use the default endpoint.
|
154
149
|
# * `allow_mutating_methods` - (boolean) Whether expressions and
|
@@ -254,4 +249,11 @@ module Google
|
|
254
249
|
end
|
255
250
|
end
|
256
251
|
end
|
252
|
+
|
253
|
+
# Aliases for compatibility with older spellings.
|
254
|
+
# @private
|
255
|
+
module Devtools
|
256
|
+
# @private
|
257
|
+
Clouddebugger = ::Google::Cloud::Debugger unless const_defined? :Clouddebugger
|
258
|
+
end
|
257
259
|
end
|
@@ -120,7 +120,10 @@ module Google
|
|
120
120
|
# @param [String] app_root Absolute path to the root directory of
|
121
121
|
# the debuggee application. Default to Rack root.
|
122
122
|
#
|
123
|
-
def initialize service,
|
123
|
+
def initialize service,
|
124
|
+
service_name:,
|
125
|
+
service_version:,
|
126
|
+
logger: nil,
|
124
127
|
app_root: nil
|
125
128
|
super()
|
126
129
|
|
@@ -30,7 +30,7 @@ module Google
|
|
30
30
|
#
|
31
31
|
# Abstract class that represents a breakpoint, which can be set and
|
32
32
|
# triggered in a debuggee application. Maps to gRPC struct
|
33
|
-
# {Google::
|
33
|
+
# {Google::Cloud::Debugger::V2::Breakpoint}.
|
34
34
|
#
|
35
35
|
class Breakpoint
|
36
36
|
include MonitorMixin
|
@@ -174,7 +174,7 @@ module Google
|
|
174
174
|
|
175
175
|
##
|
176
176
|
# @private New Google::Cloud::Debugger::Breakpoint
|
177
|
-
# from a Google::
|
177
|
+
# from a Google::Cloud::Debugger::V2::Breakpoint object.
|
178
178
|
def self.from_grpc grpc
|
179
179
|
return new if grpc.nil?
|
180
180
|
|
@@ -265,7 +265,7 @@ module Google
|
|
265
265
|
def valid?
|
266
266
|
Validator.validate self unless complete?
|
267
267
|
|
268
|
-
status
|
268
|
+
status&.is_error ? false : true
|
269
269
|
end
|
270
270
|
|
271
271
|
##
|
@@ -337,9 +337,9 @@ module Google
|
|
337
337
|
|
338
338
|
##
|
339
339
|
# @private Exports the Breakpoint to a
|
340
|
-
# Google::
|
340
|
+
# Google::Cloud::Debugger::V2::Breakpoint object.
|
341
341
|
def to_grpc
|
342
|
-
Google::
|
342
|
+
Google::Cloud::Debugger::V2::Breakpoint.new(
|
343
343
|
id: id.to_s,
|
344
344
|
location: location.to_grpc,
|
345
345
|
condition: condition.to_s,
|
@@ -398,7 +398,7 @@ module Google
|
|
398
398
|
|
399
399
|
##
|
400
400
|
# @private Formats the labels so they can be saved to a
|
401
|
-
# Google::
|
401
|
+
# Google::Cloud::Debugger::V2::Breakpoint object.
|
402
402
|
def labels_to_grpc
|
403
403
|
# Coerce symbols to strings
|
404
404
|
Hash[labels.map do |k, v|
|
@@ -408,21 +408,21 @@ module Google
|
|
408
408
|
|
409
409
|
##
|
410
410
|
# @private Exports the Breakpoint stack_frames to an array of
|
411
|
-
# Google::
|
411
|
+
# Google::Cloud::Debugger::V2::StackFrame objects.
|
412
412
|
def stack_frames_to_grpc
|
413
413
|
stack_frames.nil? ? [] : stack_frames.map(&:to_grpc)
|
414
414
|
end
|
415
415
|
|
416
416
|
##
|
417
417
|
# @private Exports the Breakpoint stack_frames to an array of
|
418
|
-
# Google::
|
418
|
+
# Google::Cloud::Debugger::V2::Variable objects.
|
419
419
|
def evaluated_expressions_to_grpc
|
420
420
|
evaluated_expressions.nil? ? [] : evaluated_expressions.map(&:to_grpc)
|
421
421
|
end
|
422
422
|
|
423
423
|
##
|
424
424
|
# @private Exports Breakpoint status to
|
425
|
-
# Google::
|
425
|
+
# Google::Cloud::Debugger::V2::StatusMessage object
|
426
426
|
def status_to_grpc
|
427
427
|
status.nil? ? nil : status.to_grpc
|
428
428
|
end
|
@@ -89,7 +89,7 @@ module Google
|
|
89
89
|
##
|
90
90
|
# @private Predefined regex. Saves time during runtime.
|
91
91
|
FUNC_CALL_FLAG_BLACKLIST_REGEX =
|
92
|
-
/<
|
92
|
+
/<call(info|data)!.+#{FUNC_CALL_FLAG_BLACKLIST.join '|'}/.freeze
|
93
93
|
|
94
94
|
##
|
95
95
|
# @private Predefined regex. Saves time during runtime.
|
@@ -849,20 +849,18 @@ module Google
|
|
849
849
|
# do evaluation in a new thread, where function calls can be
|
850
850
|
# traced.
|
851
851
|
thr = Thread.new do
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
)
|
862
|
-
end
|
863
|
-
|
864
|
-
e
|
852
|
+
Thread.current.thread_variable_set EVALUATOR_REFERENCE, self
|
853
|
+
binding.eval wrap_expression(expression)
|
854
|
+
rescue StandardError, EvaluationError => e
|
855
|
+
# Treat all StandardError as mutation and set @mutation_cause
|
856
|
+
unless e.instance_variable_get :@mutation_cause
|
857
|
+
e.instance_variable_set(
|
858
|
+
:@mutation_cause,
|
859
|
+
Google::Cloud::Debugger::EvaluationError::UNKNOWN_CAUSE
|
860
|
+
)
|
865
861
|
end
|
862
|
+
|
863
|
+
e
|
866
864
|
end
|
867
865
|
|
868
866
|
thr.join @time_limit
|
@@ -942,7 +940,7 @@ module Google
|
|
942
940
|
##
|
943
941
|
# @private Wraps expression with tracing code
|
944
942
|
def wrap_expression expression
|
945
|
-
|
943
|
+
<<~CODE
|
946
944
|
begin
|
947
945
|
::Google::Cloud::Debugger::Breakpoint::Evaluator.send(
|
948
946
|
:enable_method_trace_for_thread)
|
@@ -951,11 +949,9 @@ module Google
|
|
951
949
|
::Google::Cloud::Debugger::Breakpoint::Evaluator.send(
|
952
950
|
:disable_method_trace_for_thread)
|
953
951
|
end
|
954
|
-
|
952
|
+
CODE
|
955
953
|
end
|
956
954
|
|
957
|
-
# rubocop:disable Layout/RescueEnsureAlignment
|
958
|
-
|
959
955
|
##
|
960
956
|
# @private Evaluation tracing callback function. This is called
|
961
957
|
# everytime a Ruby function is called during evaluation of
|
@@ -994,8 +990,6 @@ module Google
|
|
994
990
|
)
|
995
991
|
end
|
996
992
|
|
997
|
-
# rubocop:enable Layout/RescueEnsureAlignment
|
998
|
-
|
999
993
|
##
|
1000
994
|
# @private Evaluation tracing callback function. This is called
|
1001
995
|
# everytime a C function is called during evaluation of
|
@@ -1011,12 +1005,12 @@ module Google
|
|
1011
1005
|
#
|
1012
1006
|
def trace_c_func_callback receiver, defined_class, mid
|
1013
1007
|
return if @allow_mutating_methods
|
1014
|
-
|
1015
|
-
|
1008
|
+
invalid_op =
|
1009
|
+
if receiver.is_a?(Class) || receiver.is_a?(Module)
|
1016
1010
|
!validate_c_class_method(defined_class, receiver, mid)
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1011
|
+
else
|
1012
|
+
!validate_c_instance_method(defined_class, mid)
|
1013
|
+
end
|
1020
1014
|
|
1021
1015
|
return unless invalid_op
|
1022
1016
|
|
@@ -37,11 +37,12 @@ module Google
|
|
37
37
|
|
38
38
|
##
|
39
39
|
# @private Create an empty SourceLocation object.
|
40
|
-
def initialize
|
40
|
+
def initialize
|
41
|
+
end
|
41
42
|
|
42
43
|
##
|
43
44
|
# @private New Google::Cloud::Debugger::Breakpoint::SourceLocation
|
44
|
-
# from a Google::
|
45
|
+
# from a Google::Cloud::Debugger::V2::SourceLocation object.
|
45
46
|
def self.from_grpc grpc
|
46
47
|
return new if grpc.nil?
|
47
48
|
new.tap do |o|
|
@@ -53,16 +54,15 @@ module Google
|
|
53
54
|
##
|
54
55
|
# @private Determines if the SourceLocation has any data.
|
55
56
|
def empty?
|
56
|
-
path.nil? &&
|
57
|
-
line.nil?
|
57
|
+
path.nil? && line.nil?
|
58
58
|
end
|
59
59
|
|
60
60
|
##
|
61
61
|
# @private Exports the SourceLocation to a
|
62
|
-
# Google::
|
62
|
+
# Google::Cloud::Debugger::V2::SourceLocation object.
|
63
63
|
def to_grpc
|
64
64
|
return nil if empty?
|
65
|
-
Google::
|
65
|
+
Google::Cloud::Debugger::V2::SourceLocation.new(
|
66
66
|
path: path.to_s,
|
67
67
|
line: line
|
68
68
|
)
|
@@ -55,7 +55,7 @@ module Google
|
|
55
55
|
|
56
56
|
##
|
57
57
|
# @private New Google::Cloud::Debugger::Breakpoint::SourceLocation
|
58
|
-
# from a Google::
|
58
|
+
# from a Google::Cloud::Debugger::V2::SourceLocation object.
|
59
59
|
def self.from_grpc grpc
|
60
60
|
new.tap do |o|
|
61
61
|
o.function = grpc.function
|
@@ -76,10 +76,10 @@ module Google
|
|
76
76
|
|
77
77
|
##
|
78
78
|
# @private Exports the StackFrame to a
|
79
|
-
# Google::
|
79
|
+
# Google::Cloud::Debugger::V2::StackFrame object.
|
80
80
|
def to_grpc
|
81
81
|
return nil if empty?
|
82
|
-
Google::
|
82
|
+
Google::Cloud::Debugger::V2::StackFrame.new(
|
83
83
|
function: function.to_s,
|
84
84
|
location: location.to_grpc,
|
85
85
|
arguments: arguments_to_grpc,
|
@@ -91,14 +91,14 @@ module Google
|
|
91
91
|
|
92
92
|
##
|
93
93
|
# @private Exports the StackFrame arguments to an array of
|
94
|
-
# Google::
|
94
|
+
# Google::Cloud::Debugger::V2::Variable objects.
|
95
95
|
def arguments_to_grpc
|
96
96
|
arguments.nil? ? [] : arguments.map(&:to_grpc)
|
97
97
|
end
|
98
98
|
|
99
99
|
##
|
100
100
|
# @private Exports the StackFrame locals to an array of
|
101
|
-
# Google::
|
101
|
+
# Google::Cloud::Debugger::V2::Variable objects.
|
102
102
|
def locals_to_grpc
|
103
103
|
locals.nil? ? [] : locals.map(&:to_grpc)
|
104
104
|
end
|
@@ -50,7 +50,7 @@ module Google
|
|
50
50
|
|
51
51
|
##
|
52
52
|
# New Google::Cloud::Debugger::Breakpoint::StatusMessage
|
53
|
-
# from a Google::
|
53
|
+
# from a Google::Cloud::Debugger::V2::StatusMessage object.
|
54
54
|
def self.from_grpc grpc
|
55
55
|
return nil if grpc.nil?
|
56
56
|
new.tap do |s|
|
@@ -76,14 +76,12 @@ module Google
|
|
76
76
|
|
77
77
|
##
|
78
78
|
# Exports the StatusMessage to a
|
79
|
-
# Google::
|
79
|
+
# Google::Cloud::Debugger::V2::StatusMessage object.
|
80
80
|
def to_grpc
|
81
81
|
return nil if empty?
|
82
|
-
description_grpc =
|
83
|
-
Google::Devtools::Clouddebugger::V2::FormatMessage.new \
|
84
|
-
format: description.to_s
|
82
|
+
description_grpc = Google::Cloud::Debugger::V2::FormatMessage.new format: description.to_s
|
85
83
|
|
86
|
-
Google::
|
84
|
+
Google::Cloud::Debugger::V2::StatusMessage.new \
|
87
85
|
is_error: true,
|
88
86
|
refers_to: refers_to,
|
89
87
|
description: description_grpc
|
@@ -244,7 +244,7 @@ module Google
|
|
244
244
|
|
245
245
|
# If source is a non-empty Array or Hash, or source has instance
|
246
246
|
# variables, evaluate source as a compound variable.
|
247
|
-
if compound_var?(source) && depth
|
247
|
+
if compound_var?(source) && depth.positive?
|
248
248
|
from_compound_var source, name: name, depth: depth,
|
249
249
|
var_table: var_table, limit: limit
|
250
250
|
else
|
@@ -358,9 +358,7 @@ module Google
|
|
358
358
|
|
359
359
|
limit = deduct_limit limit, member_var.total_size
|
360
360
|
|
361
|
-
buffer_full =
|
362
|
-
i >= MAX_MEMBERS ||
|
363
|
-
member_var.buffer_full_variable?
|
361
|
+
buffer_full = limit&.negative? || i >= MAX_MEMBERS || member_var.buffer_full_variable?
|
364
362
|
|
365
363
|
if buffer_full
|
366
364
|
var.members << Variable.new.tap do |last_var|
|
@@ -384,8 +382,7 @@ module Google
|
|
384
382
|
new.tap do |var|
|
385
383
|
var.name = name if name
|
386
384
|
|
387
|
-
if var_table
|
388
|
-
var_table.first.buffer_full_variable?
|
385
|
+
if var_table&.first&.buffer_full_variable?
|
389
386
|
var.var_table = var_table
|
390
387
|
var.var_table_index = 0
|
391
388
|
else
|
@@ -408,7 +405,7 @@ module Google
|
|
408
405
|
|
409
406
|
##
|
410
407
|
# @private New Google::Cloud::Debugger::Breakpoint::Variable
|
411
|
-
# from a Google::
|
408
|
+
# from a Google::Cloud::Debugger::V2::Variable object.
|
412
409
|
def self.from_grpc grpc
|
413
410
|
return new if grpc.nil?
|
414
411
|
new.tap do |o|
|
@@ -423,7 +420,7 @@ module Google
|
|
423
420
|
|
424
421
|
##
|
425
422
|
# @private New array of Google::Cloud::Debugger::Breakpoint::Variable
|
426
|
-
# from an array of Google::
|
423
|
+
# from an array of Google::Cloud::Debugger::V2::Variable
|
427
424
|
# objects.
|
428
425
|
def self.from_grpc_list grpc_list
|
429
426
|
return [] if grpc_list.nil?
|
@@ -458,10 +455,10 @@ module Google
|
|
458
455
|
|
459
456
|
##
|
460
457
|
# Exports the Variable to a
|
461
|
-
# Google::
|
458
|
+
# Google::Cloud::Debugger::V2::Variable object.
|
462
459
|
def to_grpc
|
463
460
|
return nil if empty?
|
464
|
-
Google::
|
461
|
+
Google::Cloud::Debugger::V2::Variable.new(
|
465
462
|
name: name.to_s,
|
466
463
|
value: value.to_s,
|
467
464
|
type: type.to_s,
|
@@ -584,7 +581,7 @@ module Google
|
|
584
581
|
|
585
582
|
##
|
586
583
|
# @private Exports the Variable members to an array of
|
587
|
-
# Google::
|
584
|
+
# Google::Cloud::Debugger::V2::Variable objects.
|
588
585
|
def members_to_grpc
|
589
586
|
members.nil? ? nil : members.map(&:to_grpc)
|
590
587
|
end
|
@@ -12,9 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
16
|
-
require "google/cloud/debugger/v2/credentials"
|
17
|
-
require "google/cloud/logging/credentials"
|
15
|
+
require "google/cloud/debugger/v2/debugger/credentials"
|
18
16
|
|
19
17
|
module Google
|
20
18
|
module Cloud
|
@@ -38,9 +36,14 @@ module Google
|
|
38
36
|
#
|
39
37
|
# debugger.project_id #=> "my-project"
|
40
38
|
#
|
41
|
-
class Credentials < Google::Cloud::Debugger::V2::Credentials
|
42
|
-
|
43
|
-
|
39
|
+
class Credentials < Google::Cloud::Debugger::V2::Debugger::Credentials
|
40
|
+
self.scope = [
|
41
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
42
|
+
"https://www.googleapis.com/auth/cloud_debugger",
|
43
|
+
"https://www.googleapis.com/auth/logging.admin",
|
44
|
+
"https://www.googleapis.com/auth/logging.read",
|
45
|
+
"https://www.googleapis.com/auth/logging.write"
|
46
|
+
]
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|