Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
Unique nonzero id for the function.
Name of the function, in human-readable form if available.
Index into string table
Name of the function, as identified by the system. For instance, it can be a C++ mangled name.
Index into string table
Source file containing the function.
Index into string table
Line number in source file.
Used in:
Index into string table
At most one of the following must be present
Index into string table
Should only be present when num is present. Specifies the units of num. Use arbitrary string (for example, "requests") as a custom count unit. If no unit is specified, consumer may apply heuristic to deduce the unit. Consumers may also interpret units like "bytes" and "kilobytes" as memory units and units like "seconds" and "nanoseconds" as time units, and apply appropriate unit conversions to these.
Index into string table
Used in:
The id of the corresponding profile.Function for this line.
Line number in source code.
Describes function and line table debug information.
Used in:
Unique nonzero id for the location. A profile could use instruction addresses or any integer sequence as ids.
The id of the corresponding profile.Mapping for this location. It can be unset if the mapping is unknown or not applicable for this profile type.
The instruction address for this location, if available. It should be within [Mapping.memory_start...Mapping.memory_limit] for the corresponding mapping. A non-leaf address may be in the middle of a call instruction. It is up to display tools to find the beginning of the instruction if necessary.
Multiple line indicates this location has inlined functions, where the last entry represents the caller into which the preceding entries were inlined. E.g., if memcpy() is inlined into printf: line[0].function_name == "memcpy" line[1].function_name == "printf"
Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information above represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes.
Used in:
Unique nonzero id for the mapping.
Address at which the binary (or DLL) is loaded into memory.
The limit of the address range occupied by this mapping.
Offset in the binary that corresponds to the first mapped address.
The object this entry is loaded from. This can be a filename on disk for the main binary and shared libraries, or virtual abstractions like "[vdso]".
Index into string table
A string that uniquely identifies a particular program version with high probability. E.g., for binaries generated by GNU tools, it could be the contents of the .note.gnu.build-id field.
Index into string table
The following fields indicate the resolution of symbolic info.
A description of the samples associated with each Sample.value. For a cpu profile this might be: [["cpu","nanoseconds"]] or [["wall","seconds"]] or [["syscall","count"]] For a heap profile, this might be: [["allocations","count"], ["space","bytes"]], If one of the values represents the number of events represented by the sample, by convention it should be at index 0 and use sample_type.unit == "count".
The set of samples recorded in this profile.
Mapping from address ranges to the image/binary/library mapped into that address range. mapping[0] will be the main binary.
Locations referenced by samples.
Functions referenced by locations.
A common table for strings referenced by various messages. string_table[0] must always be "".
frames with Function.function_name fully matching the following regexp will be dropped from the samples, along with their successors.
Index into string table.
frames with Function.function_name fully matching the following regexp will be kept, even if it matches drop_frames.
Index into string table.
Time of collection (UTC) represented as nanoseconds past the epoch.
Duration of the profile, if a duration makes sense.
The kind of events between sampled occurrences. e.g [ "cpu","cycles" ] or [ "heap","bytes" ]
The number of events between sampled occurrences.
Free-form text associated with the profile. The text is displayed as is to the user by the tools that read profiles (e.g. by pprof). This field should not be used to store any machine-readable information, it is only for human-friendly content. The profile must stay functional if this field is cleaned.
Indices into string table.
Index into the string table of the type of the preferred sample value. If unset, clients should default to the last sample value.
Each Sample records values encountered in some program context. The program context is typically a stack trace, perhaps augmented with auxiliary information like the thread-id, some indicator of a higher level request being handled etc.
Used in:
The ids recorded here correspond to a Profile.location.id. The leaf is at location_id[0].
The type and unit of each value is defined by the corresponding entry in Profile.sample_type. All samples must have the same number of values, the same as the length of Profile.sample_type. When aggregating multiple samples into a single sample, the result has a list of values that is the element-wise sum of the lists of the originals.
label includes additional context for this sample. It can include things like a thread id, allocation size, etc. NOTE: While possible, having multiple values for the same label key is strongly discouraged and should never be used. Most tools (e.g. pprof) do not have good (or any) support for multi-value labels. And an even more discouraged case is having a string label and a numeric label of the same name on a sample. Again, possible to express, but should not be used.
ValueType describes the semantics and measurement units of a value.
Used in:
Index into string table.
Index into string table.