google-cloud-debugger 0.30.0 → 0.31.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/README.md +111 -75
- data/ext/google/cloud/debugger/debugger_c/evaluator.c +14 -9
- data/lib/google-cloud-debugger.rb +55 -0
- data/lib/google/cloud/debugger.rb +140 -22
- data/lib/google/cloud/debugger/agent.rb +4 -4
- data/lib/google/cloud/debugger/breakpoint.rb +2 -2
- data/lib/google/cloud/debugger/breakpoint/evaluator.rb +885 -828
- data/lib/google/cloud/debugger/breakpoint/source_location.rb +1 -2
- data/lib/google/cloud/debugger/breakpoint/validator.rb +6 -6
- data/lib/google/cloud/debugger/breakpoint/variable.rb +7 -8
- data/lib/google/cloud/debugger/breakpoint_manager.rb +1 -1
- data/lib/google/cloud/debugger/credentials.rb +7 -7
- data/lib/google/cloud/debugger/debuggee.rb +4 -8
- data/lib/google/cloud/debugger/debuggee/app_uniquifier_generator.rb +0 -2
- data/lib/google/cloud/debugger/logpoint.rb +1 -1
- data/lib/google/cloud/debugger/middleware.rb +16 -18
- data/lib/google/cloud/debugger/project.rb +2 -28
- data/lib/google/cloud/debugger/rails.rb +21 -9
- data/lib/google/cloud/debugger/service.rb +4 -2
- data/lib/google/cloud/debugger/snappoint.rb +1 -1
- data/lib/google/cloud/debugger/tracer.rb +2 -1
- data/lib/google/cloud/debugger/transmitter.rb +1 -1
- data/lib/google/cloud/debugger/version.rb +1 -1
- metadata +11 -11
@@ -22,9 +22,9 @@ module Google
|
|
22
22
|
#
|
23
23
|
# A collection of static methods to help validate a given breakpoint.
|
24
24
|
module Validator
|
25
|
-
FILE_NOT_FOUND_MSG = "File not found."
|
26
|
-
WRONG_FILE_TYPE_MSG = "File must be a `.rb` file."
|
27
|
-
INVALID_LINE_MSG = "Invalid line."
|
25
|
+
FILE_NOT_FOUND_MSG = "File not found.".freeze
|
26
|
+
WRONG_FILE_TYPE_MSG = "File must be a `.rb` file.".freeze
|
27
|
+
INVALID_LINE_MSG = "Invalid line.".freeze
|
28
28
|
|
29
29
|
##
|
30
30
|
# Validate a given breakpoint. Set breakpoint to error state if
|
@@ -52,7 +52,7 @@ module Google
|
|
52
52
|
# @private Verifies the given file path exists
|
53
53
|
def self.verify_file_path file_path
|
54
54
|
File.exist? file_path
|
55
|
-
rescue
|
55
|
+
rescue StandardError
|
56
56
|
false
|
57
57
|
end
|
58
58
|
|
@@ -61,7 +61,7 @@ module Google
|
|
61
61
|
def self.verify_file_type file_path
|
62
62
|
File.extname(file_path) == ".rb" ||
|
63
63
|
File.basename(file_path) == "config.ru"
|
64
|
-
rescue
|
64
|
+
rescue StandardError
|
65
65
|
false
|
66
66
|
end
|
67
67
|
|
@@ -82,7 +82,7 @@ module Google
|
|
82
82
|
comment_line = line =~ /^\s*#.*$/
|
83
83
|
|
84
84
|
blank_line || comment_line ? false : true
|
85
|
-
rescue
|
85
|
+
rescue StandardError
|
86
86
|
false
|
87
87
|
end
|
88
88
|
end
|
@@ -99,11 +99,12 @@ module Google
|
|
99
99
|
##
|
100
100
|
# @private Message to display on variables when snapshot buffer is
|
101
101
|
# full.
|
102
|
-
BUFFER_FULL_MSG =
|
102
|
+
BUFFER_FULL_MSG =
|
103
|
+
"Buffer full. Use an expression to see more data.".freeze
|
103
104
|
|
104
105
|
##
|
105
106
|
# @private Error message when variable can't be converted.
|
106
|
-
FAIL_CONVERSION_MSG = "Error: Unable to inspect value"
|
107
|
+
FAIL_CONVERSION_MSG = "Error: Unable to inspect value".freeze
|
107
108
|
|
108
109
|
##
|
109
110
|
# @private Name of the variable, if any.
|
@@ -249,7 +250,7 @@ module Google
|
|
249
250
|
else
|
250
251
|
from_primitive_var source, name: name, limit: limit
|
251
252
|
end
|
252
|
-
rescue
|
253
|
+
rescue StandardError
|
253
254
|
new.tap do |var|
|
254
255
|
var.name = name.to_s if name
|
255
256
|
var.set_error_state FAIL_CONVERSION_MSG
|
@@ -576,11 +577,9 @@ module Google
|
|
576
577
|
# @private Exports the Variable var_table_index attribute to
|
577
578
|
# an Int32Value gRPC struct
|
578
579
|
def var_table_index_to_grpc
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
nil
|
583
|
-
end
|
580
|
+
return unless var_table_index
|
581
|
+
|
582
|
+
Google::Protobuf::Int32Value.new value: var_table_index
|
584
583
|
end
|
585
584
|
|
586
585
|
##
|
@@ -39,20 +39,20 @@ module Google
|
|
39
39
|
# debugger.project_id #=> "my-project"
|
40
40
|
#
|
41
41
|
class Credentials < Google::Auth::Credentials
|
42
|
-
SCOPE = ["https://www.googleapis.com/auth/cloud_debugger"] +
|
43
|
-
|
44
|
-
PATH_ENV_VARS = %w
|
42
|
+
SCOPE = (["https://www.googleapis.com/auth/cloud_debugger"] +
|
43
|
+
Google::Cloud::Logging::Credentials::SCOPE).freeze
|
44
|
+
PATH_ENV_VARS = %w[DEBUGGER_CREDENTIALS
|
45
45
|
GOOGLE_CLOUD_CREDENTIALS
|
46
46
|
DEBUGGER_KEYFILE
|
47
47
|
GOOGLE_CLOUD_KEYFILE
|
48
|
-
GCLOUD_KEYFILE
|
49
|
-
JSON_ENV_VARS = %w
|
48
|
+
GCLOUD_KEYFILE].freeze
|
49
|
+
JSON_ENV_VARS = %w[DEBUGGER_CREDENTIALS_JSON
|
50
50
|
GOOGLE_CLOUD_CREDENTIALS_JSON
|
51
51
|
DEBUGGER_KEYFILE_JSON
|
52
52
|
GOOGLE_CLOUD_KEYFILE_JSON
|
53
|
-
GCLOUD_KEYFILE_JSON
|
53
|
+
GCLOUD_KEYFILE_JSON].freeze
|
54
54
|
DEFAULT_PATHS = \
|
55
|
-
["~/.config/gcloud/application_default_credentials.json"]
|
55
|
+
["~/.config/gcloud/application_default_credentials.json"].freeze
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -86,7 +86,7 @@ module Google
|
|
86
86
|
begin
|
87
87
|
response = service.register_debuggee to_grpc
|
88
88
|
@id = response.debuggee.id
|
89
|
-
rescue
|
89
|
+
rescue StandardError
|
90
90
|
revoke_registration
|
91
91
|
end
|
92
92
|
|
@@ -134,12 +134,8 @@ module Google
|
|
134
134
|
debuggee_args[:id] = id if id
|
135
135
|
|
136
136
|
source_context = read_app_json_file "source-context.json"
|
137
|
-
|
138
|
-
|
139
|
-
source_contexts = read_app_json_file "source-contexts.json"
|
140
|
-
if source_contexts
|
141
|
-
debuggee_args[:ext_source_contexts] = source_contexts
|
142
|
-
elsif source_context
|
137
|
+
if source_context
|
138
|
+
debuggee_args[:source_contexts] = [source_context]
|
143
139
|
debuggee_args[:ext_source_contexts] = [{ context: source_context }]
|
144
140
|
end
|
145
141
|
|
@@ -219,7 +215,7 @@ module Google
|
|
219
215
|
# @private Helper method to parse json file
|
220
216
|
def read_app_json_file file_path
|
221
217
|
JSON.parse File.read(file_path), symbolize_names: true
|
222
|
-
rescue
|
218
|
+
rescue StandardError
|
223
219
|
nil
|
224
220
|
end
|
225
221
|
end
|
@@ -49,8 +49,8 @@ module Google
|
|
49
49
|
@debugger = debugger
|
50
50
|
else
|
51
51
|
@debugger =
|
52
|
-
Debugger.new(
|
53
|
-
|
52
|
+
Debugger.new(project_id: configuration.project_id,
|
53
|
+
credentials: configuration.credentials,
|
54
54
|
service_name: configuration.service_name,
|
55
55
|
service_version: configuration.service_version)
|
56
56
|
|
@@ -98,16 +98,17 @@ module Google
|
|
98
98
|
# already.
|
99
99
|
#
|
100
100
|
def load_config **kwargs
|
101
|
-
|
102
|
-
|
103
|
-
configuration.project_id
|
104
|
-
configuration.keyfile = kwargs[:keyfile] ||
|
105
|
-
configuration.keyfile
|
101
|
+
project_id = kwargs[:project] || kwargs[:project_id]
|
102
|
+
configuration.project_id = project_id unless project_id.nil?
|
106
103
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
104
|
+
creds = kwargs[:credentials] || kwargs[:keyfile]
|
105
|
+
configuration.credentials = creds unless creds.nil?
|
106
|
+
|
107
|
+
service_name = kwargs[:service_name]
|
108
|
+
configuration.service_name = service_name unless service_name.nil?
|
109
|
+
|
110
|
+
service_vers = kwargs[:service_version]
|
111
|
+
configuration.service_version = service_vers unless service_vers.nil?
|
111
112
|
|
112
113
|
init_default_config
|
113
114
|
end
|
@@ -115,13 +116,10 @@ module Google
|
|
115
116
|
##
|
116
117
|
# Fallback to default configuration values if not defined already
|
117
118
|
def init_default_config
|
118
|
-
configuration.project_id ||=
|
119
|
-
|
120
|
-
configuration.
|
121
|
-
|
122
|
-
configuration.service_name ||= Debugger::Project.default_service_name
|
123
|
-
configuration.service_version ||=
|
124
|
-
Debugger::Project.default_service_version
|
119
|
+
configuration.project_id ||= Debugger.default_project_id
|
120
|
+
configuration.credentials ||= Debugger.default_credentials
|
121
|
+
configuration.service_name ||= Debugger.default_service_name
|
122
|
+
configuration.service_version ||= Debugger.default_service_version
|
125
123
|
end
|
126
124
|
|
127
125
|
##
|
@@ -14,7 +14,6 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
require "google/cloud/errors"
|
17
|
-
require "google/cloud/env"
|
18
17
|
require "google/cloud/debugger/agent"
|
19
18
|
require "google/cloud/debugger/credentials"
|
20
19
|
require "google/cloud/debugger/middleware"
|
@@ -74,32 +73,7 @@ module Google
|
|
74
73
|
def project_id
|
75
74
|
service.project
|
76
75
|
end
|
77
|
-
|
78
|
-
|
79
|
-
##
|
80
|
-
# @private Default project.
|
81
|
-
def self.default_project_id
|
82
|
-
ENV["DEBUGGER_PROJECT"] ||
|
83
|
-
ENV["GOOGLE_CLOUD_PROJECT"] ||
|
84
|
-
ENV["GCLOUD_PROJECT"] ||
|
85
|
-
Google::Cloud.env.project_id
|
86
|
-
end
|
87
|
-
|
88
|
-
##
|
89
|
-
# @private Default service name identifier.
|
90
|
-
def self.default_service_name
|
91
|
-
ENV["DEBUGGER_SERVICE_NAME"] ||
|
92
|
-
Google::Cloud.env.app_engine_service_id ||
|
93
|
-
"ruby-app"
|
94
|
-
end
|
95
|
-
|
96
|
-
##
|
97
|
-
# @private Default service version identifier.
|
98
|
-
def self.default_service_version
|
99
|
-
ENV["DEBUGGER_SERVICE_VERSION"] ||
|
100
|
-
Google::Cloud.env.app_engine_service_version ||
|
101
|
-
""
|
102
|
-
end
|
76
|
+
alias project project_id
|
103
77
|
|
104
78
|
##
|
105
79
|
# Start the Stackdriver Debugger Agent.
|
@@ -114,7 +88,7 @@ module Google
|
|
114
88
|
def start
|
115
89
|
agent.start
|
116
90
|
end
|
117
|
-
|
91
|
+
alias attach start
|
118
92
|
|
119
93
|
##
|
120
94
|
# Stop the Stackdriver Debugger Agent.
|
@@ -80,7 +80,7 @@ module Google
|
|
80
80
|
# Verify credentials and set use_debugger to false if
|
81
81
|
# credentials are invalid
|
82
82
|
unless valid_credentials? Debugger.configure.project_id,
|
83
|
-
Debugger.configure.
|
83
|
+
Debugger.configure.credentials
|
84
84
|
Cloud.configure.use_debugger = false
|
85
85
|
return
|
86
86
|
end
|
@@ -90,6 +90,8 @@ module Google
|
|
90
90
|
Google::Cloud.configure.use_debugger ||= Rails.env.production?
|
91
91
|
end
|
92
92
|
|
93
|
+
# rubocop:disable all
|
94
|
+
|
93
95
|
##
|
94
96
|
# @private Merge Rails configuration into Debugger instrumentation
|
95
97
|
# configuration.
|
@@ -99,20 +101,30 @@ module Google
|
|
99
101
|
|
100
102
|
Cloud.configure.use_debugger ||= gcp_config.use_debugger
|
101
103
|
Debugger.configure do |config|
|
102
|
-
config.project_id ||=
|
103
|
-
|
104
|
-
|
105
|
-
|
104
|
+
config.project_id ||= begin
|
105
|
+
config.project || dbg_config.project_id || dbg_config.project
|
106
|
+
gcp_config.project_id || gcp_config.project
|
107
|
+
end
|
108
|
+
config.credentials ||= begin
|
109
|
+
config.keyfile || dbg_config.credentials || dbg_config.keyfile
|
110
|
+
gcp_config.credentials || gcp_config.keyfile
|
111
|
+
end
|
112
|
+
config.service_name ||= \
|
113
|
+
(dbg_config.service_name || gcp_config.service_name)
|
114
|
+
config.service_version ||= \
|
115
|
+
(dbg_config.service_version || gcp_config.service_version)
|
106
116
|
end
|
107
117
|
end
|
108
118
|
|
119
|
+
# rubocop:enable all
|
120
|
+
|
109
121
|
##
|
110
122
|
# Fallback to default config values if config parameters not provided.
|
111
123
|
def self.init_default_config
|
112
124
|
config = Debugger.configure
|
113
|
-
config.project_id ||= Debugger
|
114
|
-
config.service_name ||= Debugger
|
115
|
-
config.service_version ||= Debugger
|
125
|
+
config.project_id ||= Debugger.default_project_id
|
126
|
+
config.service_name ||= Debugger.default_service_name
|
127
|
+
config.service_version ||= Debugger.default_service_version
|
116
128
|
end
|
117
129
|
|
118
130
|
##
|
@@ -126,7 +138,7 @@ module Google
|
|
126
138
|
# if credentials is not a Credentials object, create one
|
127
139
|
Debugger::Credentials.new credentials
|
128
140
|
end
|
129
|
-
rescue => e
|
141
|
+
rescue StandardError => e
|
130
142
|
STDOUT.puts "Note: Google::Cloud::Debugger is disabled because " \
|
131
143
|
"it failed to authorize with the service. (#{e.message})"
|
132
144
|
return false
|
@@ -44,7 +44,8 @@ module Google
|
|
44
44
|
timeout: timeout,
|
45
45
|
client_config: client_config,
|
46
46
|
lib_name: "gccl",
|
47
|
-
lib_version: Google::Cloud::Debugger::VERSION
|
47
|
+
lib_version: Google::Cloud::Debugger::VERSION
|
48
|
+
)
|
48
49
|
end
|
49
50
|
attr_accessor :mocked_debugger
|
50
51
|
|
@@ -56,7 +57,8 @@ module Google
|
|
56
57
|
timeout: timeout,
|
57
58
|
client_config: client_config,
|
58
59
|
lib_name: "gccl",
|
59
|
-
lib_version: Google::Cloud::Debugger::VERSION
|
60
|
+
lib_version: Google::Cloud::Debugger::VERSION
|
61
|
+
)
|
60
62
|
end
|
61
63
|
attr_accessor :mocked_transmitter
|
62
64
|
|
@@ -81,7 +81,8 @@ module Google
|
|
81
81
|
breakpoints_hash[breakpoint_path] ||= {}
|
82
82
|
breakpoints_hash[breakpoint_path][breakpoint_line] ||= []
|
83
83
|
breakpoints_hash[breakpoint_path][breakpoint_line].push(
|
84
|
-
active_breakpoint
|
84
|
+
active_breakpoint
|
85
|
+
)
|
85
86
|
end
|
86
87
|
|
87
88
|
# Tracer is explicitly designed to not have a lock. This should be the
|
@@ -97,7 +97,7 @@ module Google
|
|
97
97
|
return if breakpoint.nil?
|
98
98
|
begin
|
99
99
|
service.update_active_breakpoint agent.debuggee.id, breakpoint
|
100
|
-
rescue => e
|
100
|
+
rescue StandardError => e
|
101
101
|
warn ["#{e.class}: #{e.message}", e.backtrace].join("\n\t")
|
102
102
|
@last_exception = e
|
103
103
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-debugger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Heng Xiong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: google-cloud-logging
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
75
|
+
version: '1.3'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
82
|
+
version: '1.3'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,16 +154,16 @@ dependencies:
|
|
154
154
|
name: rubocop
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
159
|
+
version: 0.50.0
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
166
|
+
version: 0.50.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: simplecov
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -328,7 +328,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
328
328
|
version: '0'
|
329
329
|
requirements: []
|
330
330
|
rubyforge_project:
|
331
|
-
rubygems_version: 2.7.
|
331
|
+
rubygems_version: 2.7.6
|
332
332
|
signing_key:
|
333
333
|
specification_version: 4
|
334
334
|
summary: API Client and instrumentation library for Stackdriver Debugger
|