google-cloud-debugger-client overview

The interfaces provided are listed below, along with usage samples.


Service Description: The Controller service provides the API for orchestrating a collection of debugger agents to perform debugging tasks. These agents are each attached to a process of an application which may include one or more replicas.

The debugger agents register with the Controller to identify the application being debugged, the Debuggee. All agents that register with the same data, represent the same Debuggee, and are assigned the same debuggee_id.

The debugger agents call the Controller to retrieve the list of active Breakpoints. Agents with the same debuggee_id get the same breakpoints list. An agent that can fulfill the breakpoint request updates the Controller with the breakpoint result. The controller selects the first result received and discards the rest of the results. Agents that poll again for active breakpoints will no longer have the completed breakpoint in the list and should remove that breakpoint from their attached process.

The Controller service does not provide a way to retrieve the results of a completed breakpoint. This functionality is available using the Debugger service.

Sample for Controller2Client:

 try (Controller2Client controller2Client = Controller2Client.create()) {
   Debuggee debuggee = Debuggee.newBuilder().build();
   RegisterDebuggeeResponse response = controller2Client.registerDebuggee(debuggee);


Service Description: The Debugger service provides the API that allows users to collect run-time information from a running application, without stopping or slowing it down and without modifying its state. An application may include one or more replicated processes performing the same work.

A debugged application is represented using the Debuggee concept. The Debugger service provides a way to query for available debuggees, but does not provide a way to create one. A debuggee is created using the Controller service, usually by running a debugger agent with the application.

The Debugger service enables the client to set one or more Breakpoints on a Debuggee and collect the results of the set Breakpoints.

Sample for Debugger2Client:

 try (Debugger2Client debugger2Client = Debugger2Client.create()) {
   String debuggeeId = "debuggeeId-1833285553";
   Breakpoint breakpoint = Breakpoint.newBuilder().build();
   String clientVersion = "clientVersion771880589";
   SetBreakpointResponse response =
       debugger2Client.setBreakpoint(debuggeeId, breakpoint, clientVersion);