123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 |
- // Copyright 2019 Google LLC.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- syntax = "proto3";
- package google.devtools.clouddebugger.v2;
- import "google/devtools/source/v1/source_context.proto";
- import "google/protobuf/timestamp.proto";
- import "google/protobuf/wrappers.proto";
- option cc_enable_arenas = true;
- option csharp_namespace = "Google.Cloud.Debugger.V2";
- option go_package = "google.golang.org/genproto/googleapis/devtools/clouddebugger/v2;clouddebugger";
- option java_multiple_files = true;
- option java_outer_classname = "DataProto";
- option java_package = "com.google.devtools.clouddebugger.v2";
- option php_namespace = "Google\\Cloud\\Debugger\\V2";
- option ruby_package = "Google::Cloud::Debugger::V2";
- // Represents a message with parameters.
- message FormatMessage {
- // Format template for the message. The `format` uses placeholders `$0`,
- // `$1`, etc. to reference parameters. `$$` can be used to denote the `$`
- // character.
- //
- // Examples:
- //
- // * `Failed to load '$0' which helps debug $1 the first time it
- // is loaded. Again, $0 is very important.`
- // * `Please pay $$10 to use $0 instead of $1.`
- string format = 1;
- // Optional parameters to be embedded into the message.
- repeated string parameters = 2;
- }
- // Represents a contextual status message.
- // The message can indicate an error or informational status, and refer to
- // specific parts of the containing object.
- // For example, the `Breakpoint.status` field can indicate an error referring
- // to the `BREAKPOINT_SOURCE_LOCATION` with the message `Location not found`.
- message StatusMessage {
- // Enumerates references to which the message applies.
- enum Reference {
- // Status doesn't refer to any particular input.
- UNSPECIFIED = 0;
- // Status applies to the breakpoint and is related to its location.
- BREAKPOINT_SOURCE_LOCATION = 3;
- // Status applies to the breakpoint and is related to its condition.
- BREAKPOINT_CONDITION = 4;
- // Status applies to the breakpoint and is related to its expressions.
- BREAKPOINT_EXPRESSION = 7;
- // Status applies to the breakpoint and is related to its age.
- BREAKPOINT_AGE = 8;
- // Status applies to the entire variable.
- VARIABLE_NAME = 5;
- // Status applies to variable value (variable name is valid).
- VARIABLE_VALUE = 6;
- }
- // Distinguishes errors from informational messages.
- bool is_error = 1;
- // Reference to which the message applies.
- Reference refers_to = 2;
- // Status message text.
- FormatMessage description = 3;
- }
- // Represents a location in the source code.
- message SourceLocation {
- // Path to the source file within the source context of the target binary.
- string path = 1;
- // Line inside the file. The first line in the file has the value `1`.
- int32 line = 2;
- // Column within a line. The first column in a line as the value `1`.
- // Agents that do not support setting breakpoints on specific columns ignore
- // this field.
- int32 column = 3;
- }
- // Represents a variable or an argument possibly of a compound object type.
- // Note how the following variables are represented:
- //
- // 1) A simple variable:
- //
- // int x = 5
- //
- // { name: "x", value: "5", type: "int" } // Captured variable
- //
- // 2) A compound object:
- //
- // struct T {
- // int m1;
- // int m2;
- // };
- // T x = { 3, 7 };
- //
- // { // Captured variable
- // name: "x",
- // type: "T",
- // members { name: "m1", value: "3", type: "int" },
- // members { name: "m2", value: "7", type: "int" }
- // }
- //
- // 3) A pointer where the pointee was captured:
- //
- // T x = { 3, 7 };
- // T* p = &x;
- //
- // { // Captured variable
- // name: "p",
- // type: "T*",
- // value: "0x00500500",
- // members { name: "m1", value: "3", type: "int" },
- // members { name: "m2", value: "7", type: "int" }
- // }
- //
- // 4) A pointer where the pointee was not captured:
- //
- // T* p = new T;
- //
- // { // Captured variable
- // name: "p",
- // type: "T*",
- // value: "0x00400400"
- // status { is_error: true, description { format: "unavailable" } }
- // }
- //
- // The status should describe the reason for the missing value,
- // such as `<optimized out>`, `<inaccessible>`, `<pointers limit reached>`.
- //
- // Note that a null pointer should not have members.
- //
- // 5) An unnamed value:
- //
- // int* p = new int(7);
- //
- // { // Captured variable
- // name: "p",
- // value: "0x00500500",
- // type: "int*",
- // members { value: "7", type: "int" } }
- //
- // 6) An unnamed pointer where the pointee was not captured:
- //
- // int* p = new int(7);
- // int** pp = &p;
- //
- // { // Captured variable
- // name: "pp",
- // value: "0x00500500",
- // type: "int**",
- // members {
- // value: "0x00400400",
- // type: "int*"
- // status {
- // is_error: true,
- // description: { format: "unavailable" } }
- // }
- // }
- // }
- //
- // To optimize computation, memory and network traffic, variables that
- // repeat in the output multiple times can be stored once in a shared
- // variable table and be referenced using the `var_table_index` field. The
- // variables stored in the shared table are nameless and are essentially
- // a partition of the complete variable. To reconstruct the complete
- // variable, merge the referencing variable with the referenced variable.
- //
- // When using the shared variable table, the following variables:
- //
- // T x = { 3, 7 };
- // T* p = &x;
- // T& r = x;
- //
- // { name: "x", var_table_index: 3, type: "T" } // Captured variables
- // { name: "p", value "0x00500500", type="T*", var_table_index: 3 }
- // { name: "r", type="T&", var_table_index: 3 }
- //
- // { // Shared variable table entry #3:
- // members { name: "m1", value: "3", type: "int" },
- // members { name: "m2", value: "7", type: "int" }
- // }
- //
- // Note that the pointer address is stored with the referencing variable
- // and not with the referenced variable. This allows the referenced variable
- // to be shared between pointers and references.
- //
- // The type field is optional. The debugger agent may or may not support it.
- message Variable {
- // Name of the variable, if any.
- string name = 1;
- // Simple value of the variable.
- string value = 2;
- // Variable type (e.g. `MyClass`). If the variable is split with
- // `var_table_index`, `type` goes next to `value`. The interpretation of
- // a type is agent specific. It is recommended to include the dynamic type
- // rather than a static type of an object.
- string type = 6;
- // Members contained or pointed to by the variable.
- repeated Variable members = 3;
- // Reference to a variable in the shared variable table. More than
- // one variable can reference the same variable in the table. The
- // `var_table_index` field is an index into `variable_table` in Breakpoint.
- google.protobuf.Int32Value var_table_index = 4;
- // Status associated with the variable. This field will usually stay
- // unset. A status of a single variable only applies to that variable or
- // expression. The rest of breakpoint data still remains valid. Variables
- // might be reported in error state even when breakpoint is not in final
- // state.
- //
- // The message may refer to variable name with `refers_to` set to
- // `VARIABLE_NAME`. Alternatively `refers_to` will be set to `VARIABLE_VALUE`.
- // In either case variable value and members will be unset.
- //
- // Example of error message applied to name: `Invalid expression syntax`.
- //
- // Example of information message applied to value: `Not captured`.
- //
- // Examples of error message applied to value:
- //
- // * `Malformed string`,
- // * `Field f not found in class C`
- // * `Null pointer dereference`
- StatusMessage status = 5;
- }
- // Represents a stack frame context.
- message StackFrame {
- // Demangled function name at the call site.
- string function = 1;
- // Source location of the call site.
- SourceLocation location = 2;
- // Set of arguments passed to this function.
- // Note that this might not be populated for all stack frames.
- repeated Variable arguments = 3;
- // Set of local variables at the stack frame location.
- // Note that this might not be populated for all stack frames.
- repeated Variable locals = 4;
- }
- // Represents the breakpoint specification, status and results.
- message Breakpoint {
- // Actions that can be taken when a breakpoint hits.
- // Agents should reject breakpoints with unsupported or unknown action values.
- enum Action {
- // Capture stack frame and variables and update the breakpoint.
- // The data is only captured once. After that the breakpoint is set
- // in a final state.
- CAPTURE = 0;
- // Log each breakpoint hit. The breakpoint remains active until
- // deleted or expired.
- LOG = 1;
- }
- // Log severity levels.
- enum LogLevel {
- // Information log message.
- INFO = 0;
- // Warning log message.
- WARNING = 1;
- // Error log message.
- ERROR = 2;
- }
- // Breakpoint identifier, unique in the scope of the debuggee.
- string id = 1;
- // Action that the agent should perform when the code at the
- // breakpoint location is hit.
- Action action = 13;
- // Breakpoint source location.
- SourceLocation location = 2;
- // Condition that triggers the breakpoint.
- // The condition is a compound boolean expression composed using expressions
- // in a programming language at the source location.
- string condition = 3;
- // List of read-only expressions to evaluate at the breakpoint location.
- // The expressions are composed using expressions in the programming language
- // at the source location. If the breakpoint action is `LOG`, the evaluated
- // expressions are included in log statements.
- repeated string expressions = 4;
- // Only relevant when action is `LOG`. Defines the message to log when
- // the breakpoint hits. The message may include parameter placeholders `$0`,
- // `$1`, etc. These placeholders are replaced with the evaluated value
- // of the appropriate expression. Expressions not referenced in
- // `log_message_format` are not logged.
- //
- // Example: `Message received, id = $0, count = $1` with
- // `expressions` = `[ message.id, message.count ]`.
- string log_message_format = 14;
- // Indicates the severity of the log. Only relevant when action is `LOG`.
- LogLevel log_level = 15;
- // When true, indicates that this is a final result and the
- // breakpoint state will not change from here on.
- bool is_final_state = 5;
- // Time this breakpoint was created by the server in seconds resolution.
- google.protobuf.Timestamp create_time = 11;
- // Time this breakpoint was finalized as seen by the server in seconds
- // resolution.
- google.protobuf.Timestamp final_time = 12;
- // E-mail address of the user that created this breakpoint
- string user_email = 16;
- // Breakpoint status.
- //
- // The status includes an error flag and a human readable message.
- // This field is usually unset. The message can be either
- // informational or an error message. Regardless, clients should always
- // display the text message back to the user.
- //
- // Error status indicates complete failure of the breakpoint.
- //
- // Example (non-final state): `Still loading symbols...`
- //
- // Examples (final state):
- //
- // * `Invalid line number` referring to location
- // * `Field f not found in class C` referring to condition
- StatusMessage status = 10;
- // The stack at breakpoint time, where stack_frames[0] represents the most
- // recently entered function.
- repeated StackFrame stack_frames = 7;
- // Values of evaluated expressions at breakpoint time.
- // The evaluated expressions appear in exactly the same order they
- // are listed in the `expressions` field.
- // The `name` field holds the original expression text, the `value` or
- // `members` field holds the result of the evaluated expression.
- // If the expression cannot be evaluated, the `status` inside the `Variable`
- // will indicate an error and contain the error text.
- repeated Variable evaluated_expressions = 8;
- // The `variable_table` exists to aid with computation, memory and network
- // traffic optimization. It enables storing a variable once and reference
- // it from multiple variables, including variables stored in the
- // `variable_table` itself.
- // For example, the same `this` object, which may appear at many levels of
- // the stack, can have all of its data stored once in this table. The
- // stack frame variables then would hold only a reference to it.
- //
- // The variable `var_table_index` field is an index into this repeated field.
- // The stored objects are nameless and get their name from the referencing
- // variable. The effective variable is a merge of the referencing variable
- // and the referenced variable.
- repeated Variable variable_table = 9;
- // A set of custom breakpoint properties, populated by the agent, to be
- // displayed to the user.
- map<string, string> labels = 17;
- }
- // Represents the debugged application. The application may include one or more
- // replicated processes executing the same code. Each of these processes is
- // attached with a debugger agent, carrying out the debugging commands.
- // Agents attached to the same debuggee identify themselves as such by using
- // exactly the same Debuggee message value when registering.
- message Debuggee {
- // Unique identifier for the debuggee generated by the controller service.
- string id = 1;
- // Project the debuggee is associated with.
- // Use project number or id when registering a Google Cloud Platform project.
- string project = 2;
- // Uniquifier to further distinguish the application.
- // It is possible that different applications might have identical values in
- // the debuggee message, thus, incorrectly identified as a single application
- // by the Controller service. This field adds salt to further distinguish the
- // application. Agents should consider seeding this field with value that
- // identifies the code, binary, configuration and environment.
- string uniquifier = 3;
- // Human readable description of the debuggee.
- // Including a human-readable project name, environment name and version
- // information is recommended.
- string description = 4;
- // If set to `true`, indicates that Controller service does not detect any
- // activity from the debuggee agents and the application is possibly stopped.
- bool is_inactive = 5;
- // Version ID of the agent.
- // Schema: `domain/language-platform/vmajor.minor` (for example
- // `google.com/java-gcp/v1.1`).
- string agent_version = 6;
- // If set to `true`, indicates that the agent should disable itself and
- // detach from the debuggee.
- bool is_disabled = 7;
- // Human readable message to be displayed to the user about this debuggee.
- // Absence of this field indicates no status. The message can be either
- // informational or an error status.
- StatusMessage status = 8;
- // References to the locations and revisions of the source code used in the
- // deployed application.
- repeated google.devtools.source.v1.SourceContext source_contexts = 9;
- // References to the locations and revisions of the source code used in the
- // deployed application.
- repeated google.devtools.source.v1.ExtendedSourceContext ext_source_contexts = 13 [deprecated = true];
- // A set of custom debuggee properties, populated by the agent, to be
- // displayed to the user.
- map<string, string> labels = 11;
- }
|