google-cloud-debugger 0.24.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +8 -0
  3. data/LICENSE +201 -0
  4. data/README.md +56 -0
  5. data/ext/google/cloud/debugger/debugger_c/debugger.c +31 -0
  6. data/ext/google/cloud/debugger/debugger_c/debugger.h +26 -0
  7. data/ext/google/cloud/debugger/debugger_c/evaluator.c +78 -0
  8. data/ext/google/cloud/debugger/debugger_c/evaluator.h +25 -0
  9. data/ext/google/cloud/debugger/debugger_c/extconf.rb +22 -0
  10. data/ext/google/cloud/debugger/debugger_c/tracer.c +478 -0
  11. data/ext/google/cloud/debugger/debugger_c/tracer.h +31 -0
  12. data/lib/google-cloud-debugger.rb +121 -0
  13. data/lib/google/cloud/debugger.rb +379 -0
  14. data/lib/google/cloud/debugger/agent.rb +204 -0
  15. data/lib/google/cloud/debugger/async_actor.rb +290 -0
  16. data/lib/google/cloud/debugger/breakpoint.rb +382 -0
  17. data/lib/google/cloud/debugger/breakpoint/evaluator.rb +1113 -0
  18. data/lib/google/cloud/debugger/breakpoint/source_location.rb +75 -0
  19. data/lib/google/cloud/debugger/breakpoint/stack_frame.rb +109 -0
  20. data/lib/google/cloud/debugger/breakpoint/variable.rb +304 -0
  21. data/lib/google/cloud/debugger/breakpoint_manager.rb +217 -0
  22. data/lib/google/cloud/debugger/credentials.rb +41 -0
  23. data/lib/google/cloud/debugger/debuggee.rb +204 -0
  24. data/lib/google/cloud/debugger/debuggee/app_uniquifier_generator.rb +78 -0
  25. data/lib/google/cloud/debugger/middleware.rb +77 -0
  26. data/lib/google/cloud/debugger/project.rb +135 -0
  27. data/lib/google/cloud/debugger/rails.rb +141 -0
  28. data/lib/google/cloud/debugger/service.rb +130 -0
  29. data/lib/google/cloud/debugger/tracer.rb +165 -0
  30. data/lib/google/cloud/debugger/transmitter.rb +129 -0
  31. data/lib/google/cloud/debugger/v2.rb +15 -0
  32. data/lib/google/cloud/debugger/v2/controller2_client.rb +299 -0
  33. data/lib/google/cloud/debugger/v2/controller2_client_config.json +43 -0
  34. data/lib/google/cloud/debugger/v2/debugger2_client.rb +378 -0
  35. data/lib/google/cloud/debugger/v2/debugger2_client_config.json +53 -0
  36. data/lib/google/cloud/debugger/v2/doc/google/devtools/clouddebugger/v2/data.rb +441 -0
  37. data/lib/google/cloud/debugger/v2/doc/google/devtools/clouddebugger/v2/debugger.rb +151 -0
  38. data/lib/google/cloud/debugger/v2/doc/google/devtools/source/v1/source_context.rb +161 -0
  39. data/lib/google/cloud/debugger/v2/doc/google/protobuf/timestamp.rb +81 -0
  40. data/lib/google/cloud/debugger/version.rb +22 -0
  41. data/lib/google/devtools/clouddebugger/v2/controller_pb.rb +47 -0
  42. data/lib/google/devtools/clouddebugger/v2/controller_services_pb.rb +97 -0
  43. data/lib/google/devtools/clouddebugger/v2/data_pb.rb +105 -0
  44. data/lib/google/devtools/clouddebugger/v2/debugger_pb.rb +74 -0
  45. data/lib/google/devtools/clouddebugger/v2/debugger_services_pb.rb +64 -0
  46. data/lib/google/devtools/source/v1/source_context_pb.rb +89 -0
  47. metadata +300 -0
@@ -0,0 +1,31 @@
1
+ /*
2
+ Copyright 2017 Google Inc. All rights reserved.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ #ifndef GOOGLE_CLOUD_RUBY_DEBUGGER_TRACER_H_
18
+ #define GOOGLE_CLOUD_RUBY_DEBUGGER_TRACER_H_
19
+
20
+ #include "ruby/debug.h"
21
+
22
+ #define FILE_TRACEPOINT_EVENT (RUBY_EVENT_CLASS | RUBY_EVENT_CALL | RUBY_EVENT_C_CALL | RUBY_EVENT_B_CALL)
23
+ #define FIBER_TRACEPOINT_EVENT RUBY_EVENT_FIBER_SWITCH
24
+
25
+ /* To prevent unused parameter warnings */
26
+ #define UNUSED(x) (void)(x)
27
+
28
+ void
29
+ Init_tracer(VALUE mDebugger);
30
+
31
+ #endif // GOOGLE_CLOUD_RUBY_DEBUGGER_TRACER_H_
@@ -0,0 +1,121 @@
1
+ # Copyright 2017 Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ ##
16
+ # This file is here to be autorequired by bundler, so that the .debugger and
17
+ # #debugger methods can be available, but the library and all dependencies won't
18
+ # be loaded until required and used.
19
+
20
+
21
+ gem "google-cloud-core"
22
+ require "google/cloud"
23
+
24
+ module Google
25
+ module Cloud
26
+ ##
27
+ # Creates a new debugger object for instrumenting Stackdriver Debugger for
28
+ # an application. Each call creates a new debugger agent with independent
29
+ # connection service.
30
+ #
31
+ # For more information on connecting to Google Cloud see the [Authentication
32
+ # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
33
+ #
34
+ # @param [String] module_name Name for the debuggee application. Optional.
35
+ # @param [String] module_version Version identifier for the debuggee
36
+ # application. Optional.
37
+ # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
38
+ # set of resources and operations that the connection can access. See
39
+ # [Using OAuth 2.0 to Access Google
40
+ # APIs](https://developers.google.com/identity/protocols/OAuth2).
41
+ #
42
+ # The default scope is:
43
+ #
44
+ # * `https://www.googleapis.com/auth/cloud_debugger`
45
+ # @param [Integer] timeout Default timeout to use in requests. Optional.
46
+ # @param [Hash] client_config A hash of values to override the default
47
+ # behavior of the API client. Optional.
48
+ #
49
+ # @return [Google::Cloud::Debugger::Project]
50
+ #
51
+ # @example
52
+ # require "google/cloud"
53
+ #
54
+ # gcloud = Google::Cloud.new
55
+ # debugger = gcloud.debugger
56
+ #
57
+ # debugger.start
58
+ #
59
+ # @example The default scope can be overridden with the `scope` option:
60
+ # require "google/cloud"
61
+ #
62
+ # gcloud = Google::Cloud.new
63
+ # platform_scope = "https://www.googleapis.com/auth/cloud-platform"
64
+ # debugger = gcloud.debugger scope: platform_scope
65
+ #
66
+ def debugger module_name: nil, module_version: nil, scope: nil,
67
+ timeout: nil, client_config: nil
68
+ Google::Cloud.debugger @project, @keyfile, module_name: module_name,
69
+ module_version: module_version,
70
+ scope: scope,
71
+ timeout: (timeout || @timeout),
72
+ client_config: client_config
73
+ end
74
+
75
+ ##
76
+ # Creates a new debugger object for instrumenting Stackdriver Debugger for
77
+ # an application. Each call creates a new debugger agent with independent
78
+ # connection service.
79
+ #
80
+ # For more information on connecting to Google Cloud see the [Authentication
81
+ # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
82
+ #
83
+ # @param [String] project Project identifier for the Stackdriver Debugger
84
+ # service you are connecting to.
85
+ # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
86
+ # file path the file must be readable.
87
+ # @param [String] module_name Name for the debuggee application. Optional.
88
+ # @param [String] module_version Version identifier for the debuggee
89
+ # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
90
+ # set of resources and operations that the connection can access. See
91
+ # [Using OAuth 2.0 to Access Google
92
+ # APIs](https://developers.google.com/identity/protocols/OAuth2).
93
+ #
94
+ # The default scope is:
95
+ #
96
+ # * `https://www.googleapis.com/auth/cloud_debugger`
97
+ # @param [Integer] timeout Default timeout to use in requests. Optional.
98
+ # @param [Hash] client_config A hash of values to override the default
99
+ # behavior of the API client. Optional.
100
+ #
101
+ # @return [Google::Cloud::Debugger::Project]
102
+ #
103
+ # @example
104
+ # require "google/cloud"
105
+ #
106
+ # debugger = Google::Cloud.debugger
107
+ #
108
+ # debugger.start
109
+ #
110
+ def self.debugger project = nil, keyfile = nil, module_name: nil,
111
+ module_version: nil, scope: nil, timeout: nil,
112
+ client_config: nil
113
+ require "google/cloud/debugger"
114
+ Google::Cloud::Debugger.new project: project, keyfile: keyfile,
115
+ module_name: module_name,
116
+ module_version: module_version,
117
+ scope: scope, timeout: timeout,
118
+ client_config: client_config
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,379 @@
1
+ # Copyright 2017 Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ require "google-cloud-debugger"
17
+ require "google/cloud/debugger/project"
18
+
19
+ module Google
20
+ module Cloud
21
+ ##
22
+ # # Stackdriver Debugger
23
+ #
24
+ # Stackdriver Debugger is a feature of the Google Cloud Platform that lets
25
+ # you inspect the state of an application at any code location without using
26
+ # logging statements and without stopping or slowing down your applications.
27
+ # Your users are not impacted during debugging. Using the production
28
+ # debugger you can capture the local variables and call stack and link it
29
+ # back to a specific line location in your source code. You can use this to
30
+ # analyze the production state of your application and understand the
31
+ # behavior of your code in production.
32
+ #
33
+ # For general information about Stackdriver Debugger, read [Stackdriver
34
+ # Debugger Documentation](https://cloud.google.com/debugger/docs/).
35
+ #
36
+ # The Stackdriver Debugger Ruby library, `google-cloud-debugger`, provides:
37
+ #
38
+ # * Easy-to-use debugger instrumentation that reports state data, such as
39
+ # value of program variables and the call stack, to Stackdriver Debugger
40
+ # when the code at a breakpoint location is executed in your Ruby
41
+ # application. See the [instrumenting your app](#instrumenting-your-app)
42
+ # section for how to debug your application, in both development and
43
+ # production.
44
+ # * An idiomatic Ruby API for registerying debuggee application, and
45
+ # querying or manipulating breakpoints in registered Ruby debuggee
46
+ # application. See [Debugger API](#stackdriver-debugger-api) section for
47
+ # an introduction to Stackdriver Debugger API.
48
+ #
49
+ # ## Instrumenting Your App
50
+ #
51
+ # This instrumentation library provides the following features to help you
52
+ # debug your applications in production:
53
+ #
54
+ # * Automatic application registration. It facilitates multiple running
55
+ # instances of same version of application when hosted in production.
56
+ # * A background debugger agent that runs side-by-side with your
57
+ # application that automatically collects state data when code is
58
+ # executed at breakpoint locations.
59
+ # * A Rack middleware and Railtie that automatically manages the debugger
60
+ # agent for Ruby on Rails and other Rack-based Ruby applications.
61
+ #
62
+ # When this library is configured in your running application, and the
63
+ # source code and breakpoints are setup through the Google Cloud Console,
64
+ # You'll be able to
65
+ # [interact](https://cloud.google.com/debugger/docs/debugging) with your
66
+ # application in real time through the [Stackdriver Debugger
67
+ # UI](https://console.cloud.google.com/debug?_ga=1.84295834.280814654.1476313407).
68
+ # This library also integrates with Google App Engine Flexible to make
69
+ # debuggee application configuration more seemless.
70
+ #
71
+ # Note that when no breakpoints are created, the debugger agent consumes
72
+ # very little resource and has no interference with the running application.
73
+ # Once breakpoints are created and depends on where the breakpoints are
74
+ # located, the debugger agent may add a little latency onto each request.
75
+ # The application performance will be back to normal after all breakpoints
76
+ # are finished being evaluated. Be aware the more breakpoints are created,
77
+ # or the harder to reach the breakpoints, the more resource the debugger
78
+ # agent would need to consume.
79
+ #
80
+ # ### Using instrumentation with Ruby on Rails
81
+ #
82
+ # To install application instrumentation in your Ruby on Rails app, add this
83
+ # gem, `google-cloud-debugger`, to your Gemfile and update your bundle. Then
84
+ # add the following line to your `config/application.rb` file:
85
+ #
86
+ # ```ruby
87
+ # require "google/cloud/debugger/rails"
88
+ # ```
89
+ #
90
+ # This will load a Railtie that automatically integrates with the Rails
91
+ # framework by injecting a Rack middleware. The Railtie also takes in the
92
+ # following Rails configuration as parameter of the debugger agent
93
+ # initialization:
94
+ #
95
+ # ```ruby
96
+ # # Explicitly enable or disable Stackdriver Debugger Agent
97
+ # config.google_cloud.use_debugger = true
98
+ # # Shared Google Cloud Platform project identifier
99
+ # config.google_cloud.project_id = "gcloud-project"
100
+ # # Google Cloud Platform project identifier for Stackdriver Debugger only
101
+ # config.google_cloud.debugger.project_id = "debugger-project"
102
+ # # Shared Google Cloud authentication json file
103
+ # config.google_cloud.keyfile = "/path/to/keyfile.json"
104
+ # # Google Cloud authentication json file for Stackdriver Debugger only
105
+ # config.google_cloud.debugger.keyfile = "/path/to/debugger/keyfile.json"
106
+ # # Stackdriver Debugger Agent module name identifier
107
+ # config.google_cloud.debugger.module_name = "my-ruby-app"
108
+ # # Stackdriver Debugger Agent module version identifier
109
+ # config.google_cloud.debugger.module_version = "v1"
110
+ # ```
111
+ #
112
+ # See the {Google::Cloud::Debugger::Railtie} class for more information.
113
+ #
114
+ # ### Using instrumentation with Sinatra
115
+ #
116
+ # To install application instrumentation in your Sinatra app, add this gem,
117
+ # `google-cloud-debugger`, to your Gemfile and update your bundle. Then add
118
+ # the following lines to your main application Ruby file:
119
+ #
120
+ # ```ruby
121
+ # require "google/cloud/debugger"
122
+ # use Google::Cloud::Debugger::Middleware
123
+ # ```
124
+ #
125
+ # This will install the debugger middleware in your application.
126
+ #
127
+ # Configuration parameters may also be passed in as arguments to Middleware.
128
+ # ```ruby
129
+ # require "google/cloud/debugger"
130
+ # use Google::Cloud::Debugger::Middleware project: "debugger-project-id",
131
+ # keyfile: "/path/to/keyfile.json",
132
+ # module_name: "my-ruby-app",
133
+ # module_version: "v1"
134
+ # ```
135
+ #
136
+ # ### Using instrumentation with other Rack-based frameworks
137
+ #
138
+ # To install application instrumentation in an app using another Rack-based
139
+ # web framework, add this gem, `google-cloud-debugger`, to your Gemfile and
140
+ # update your bundle. Then add install the debugger middleware in your
141
+ # middleware stack. In most cases, this means adding these lines to your
142
+ # `config.ru` Rack configuration file:
143
+ #
144
+ # ```ruby
145
+ # require "google/cloud/debugger"
146
+ # use Google::Cloud::Debugger::Middleware
147
+ # ```
148
+ #
149
+ # Some web frameworks have an alternate mechanism for modifying the
150
+ # middleware stack. Consult your web framework's documentation for more
151
+ # information.
152
+ #
153
+ # ### The Stackdriver diagnostics suite
154
+ #
155
+ # The debugger library is part of the Stackdriver diagnostics suite, which
156
+ # also includes error reporting, log analysis, and tracing analysis. If you
157
+ # include the `stackdriver` gem in your Gemfile, this debugger library will
158
+ # be included automatically. In addition, if you include the `stackdriver`
159
+ # gem in an application using Ruby On Rails, the Railties will be installed
160
+ # automatically. See the documentation for the "stackdriver" gem
161
+ # for more details.
162
+ #
163
+ # ## Stackdriver Debugger API
164
+ #
165
+ # This library also includes an easy to use Ruby client for the
166
+ # Stackdriver Debugger API. This API provides calls to register debuggee
167
+ # application, as well as creating or modifying breakpoints.
168
+ #
169
+ # For further information on the Debugger API, see
170
+ # {Google::Cloud::Debugger::Project}
171
+ #
172
+ # ### Registering debuggee application
173
+ #
174
+ # ```ruby
175
+ # require "google/cloud/debugger/v2"
176
+ #
177
+ # Controller2Client = Google::Cloud::Debugger::V2::Controller2Client
178
+ # Debuggee = Google::Devtools::Clouddebugger::V2::Debuggee
179
+ #
180
+ # controller2_client = Controller2Client.new
181
+ # debuggee = Debuggee.new
182
+ # response = controller2_client.register_debuggee(debuggee)
183
+ # debuggee_id = response.debuggee.id
184
+ # ```
185
+ # See [Stackdriver Debugger Debuggee
186
+ # doc](https://cloud.google.com/debugger/api/reference/rpc/google.devtools.clouddebugger.v2#google.devtools.clouddebugger.v2.Debuggee)
187
+ # on fields necessary for registerying a debuggee.
188
+ #
189
+ # Upon successful registration, the response debuggee object will contain
190
+ # a debuggee_id that's later needed to interact with the other Stackdriver
191
+ # Debugger API.
192
+ #
193
+ # See {Google::Cloud::Debugger::V2::Controller2Client} for details.
194
+ #
195
+ # ### List Active Breakpoints
196
+ #
197
+ # ```ruby
198
+ # require "google/cloud/debugger/v2"
199
+ #
200
+ # Controller2Client = Google::Cloud::Debugger::V2::Controller2Client
201
+ # controller2_client = Controller2Client.new
202
+ #
203
+ # debuggee_id = ''
204
+ # response = controller2_client.list_active_breakpoints(debuggee_id)
205
+ # breakpoints = response.breakpoints
206
+ # ```
207
+ #
208
+ # See {Google::Cloud::Debugger::V2::Controller2Client} for details.
209
+ #
210
+ # ### Update Active Breakpoint
211
+ #
212
+ # Users can send custom snapshots for active breakpoints using this API.
213
+ #
214
+ # ```ruby
215
+ # require "google/cloud/debugger/v2"
216
+ #
217
+ # Breakpoint = Google::Devtools::Clouddebugger::V2::Breakpoint
218
+ # Controller2Client = Google::Cloud::Debugger::V2::Controller2Client
219
+ #
220
+ # controller2_client = Controller2Client.new
221
+ # debuggee_id = ''
222
+ # breakpoint = Breakpoint.new
223
+ # response =
224
+ # controller2_client.update_active_breakpoint(debuggee_id, breakpoint)
225
+ # ```
226
+ #
227
+ # See [Stackdriver Debugger Breakpoint
228
+ # doc](https://cloud.google.com/debugger/api/reference/rpc/google.devtools.clouddebugger.v2#google.devtools.clouddebugger.v2.Breakpoint)
229
+ # for all available fields for breakpoint.
230
+ #
231
+ # See {Google::Cloud::Debugger::V2::Controller2Client} for details.
232
+ #
233
+ # ### Set Breakpoint
234
+ #
235
+ # ```ruby
236
+ # require "google/cloud/debugger/v2"
237
+ #
238
+ # Breakpoint = Google::Devtools::Clouddebugger::V2::Breakpoint
239
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
240
+ #
241
+ # debugger2_client = Debugger2Client.new
242
+ # debuggee_id = ''
243
+ # breakpoint = Breakpoint.new
244
+ # client_version = ''
245
+ # response = debugger2_client.set_breakpoint(
246
+ # debuggee_id, breakpoint, client_version)
247
+ # ```
248
+ #
249
+ # See [Stackdriver Debugger Breakpoint
250
+ # doc](https://cloud.google.com/debugger/api/reference/rpc/google.devtools.clouddebugger.v2#google.devtools.clouddebugger.v2.Breakpoint)
251
+ # for fields needed to specify breakpoint location.
252
+ #
253
+ # See {Google::Cloud::Debugger::V2::Debugger2Client} for details.
254
+ #
255
+ # ### Get Breakpoint
256
+ #
257
+ # ```ruby
258
+ # require "google/cloud/debugger/v2"
259
+ #
260
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
261
+ #
262
+ # debugger2_client = Debugger2Client.new
263
+ # debuggee_id = ''
264
+ # breakpoint_id = ''
265
+ # client_version = ''
266
+ # response = debugger2_client.get_breakpoint(
267
+ # debuggee_id, breakpoint_id, client_version)
268
+ # ```
269
+ #
270
+ # See {Google::Cloud::Debugger::V2::Debugger2Client} for details.
271
+ #
272
+ # ### Delete Breakpoint
273
+ #
274
+ # ```ruby
275
+ # require "google/cloud/debugger/v2"
276
+ #
277
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
278
+ #
279
+ # debugger2_client = Debugger2Client.new
280
+ # debuggee_id = ''
281
+ # breakpoint_id = ''
282
+ # client_version = ''
283
+ # debugger2_client.delete_breakpoint(
284
+ # debuggee_id, breakpoint_id, client_version)
285
+ # ```
286
+ #
287
+ # See {Google::Cloud::Debugger::V2::Debugger2Client} for details.
288
+ #
289
+ # ### List Breakpoints
290
+ #
291
+ # ```ruby
292
+ # require "google/cloud/debugger/v2"
293
+ #
294
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
295
+ #
296
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
297
+ #
298
+ # debugger2_client = Debugger2Client.new
299
+ # debuggee_id = ''
300
+ # client_version = ''
301
+ # response = debugger2_client.list_breakpoints(debuggee_id, client_version)
302
+ # ```
303
+ #
304
+ # See {Google::Cloud::Debugger::V2::Debugger2Client} for details.
305
+ #
306
+ # ### List Debuggees
307
+ #
308
+ # ```ruby
309
+ # require "google/cloud/debugger/v2"
310
+ #
311
+ # Debugger2Client = Google::Cloud::Debugger::V2::Debugger2Client
312
+ #
313
+ # debugger2_client = Debugger2Client.new
314
+ # project = ''
315
+ # client_version = ''
316
+ # response = debugger2_client.list_debuggees(project, client_version)
317
+ # ```
318
+ #
319
+ # See {Google::Cloud::Debugger::V2::Debugger2Client} for details.
320
+ #
321
+ module Debugger
322
+ ##
323
+ # Creates a new debugger object for instrumenting Stackdriver Debugger for
324
+ # an application. Each call creates a new debugger agent with independent
325
+ # connection service.
326
+ #
327
+ # For more information on connecting to Google Cloud see the
328
+ # [Authentication
329
+ # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
330
+ #
331
+ # @param [String] project Project identifier for the Stackdriver Debugger
332
+ # service.
333
+ # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud:
334
+ # either the JSON data or the path to a readable file.
335
+ # @param [String] module_name Name for the debuggee application. Optional.
336
+ # @param [String] module_version Version identifier for the debuggee
337
+ # application. Optional.
338
+ # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
339
+ # the set of resources and operations that the connection can access.
340
+ # See [Using OAuth 2.0 to Access Google
341
+ # APIs](https://developers.google.com/identity/protocols/OAuth2).
342
+ # The default scope is `https://www.googleapis.com/auth/cloud-platform`
343
+ # @param [Integer] timeout Default timeout to use in requests. Optional.
344
+ #
345
+ # @return [Google::Cloud::Debugger::Project]
346
+ #
347
+ # @example
348
+ # require "google/cloud/debugger"
349
+ #
350
+ # debugger = Google::Cloud::Debugger.new
351
+ # debugger.start
352
+ #
353
+ def self.new project: nil, keyfile: nil, module_name: nil,
354
+ module_version: nil, scope: nil, timeout: nil,
355
+ client_config: nil
356
+ project ||= Debugger::Project.default_project
357
+ project = project.to_s # Always cast to a string
358
+ module_name ||= Debugger::Project.default_module_name
359
+ module_name = module_name.to_s
360
+ module_version ||= Debugger::Project.default_module_version
361
+ module_version = module_version.to_s
362
+
363
+ fail ArgumentError, "project is missing" if project.empty?
364
+ fail ArgumentError, "module_name is missing" if module_name.empty?
365
+ fail ArgumentError, "module_version is missing" if module_version.nil?
366
+
367
+ credentials = Credentials.credentials_with_scope keyfile, scope
368
+
369
+ Google::Cloud::Debugger::Project.new(
370
+ Google::Cloud::Debugger::Service.new(
371
+ project, credentials, timeout: timeout,
372
+ client_config: client_config),
373
+ module_name: module_name,
374
+ module_version: module_version
375
+ )
376
+ end
377
+ end
378
+ end
379
+ end