// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Call stack sample data for a given profiling session. syntax = "proto2"; option optimize_for = LITE_RUNTIME; option java_outer_classname = "CallStackProfileProtos"; option java_package = "org.chromium.components.metrics"; package metrics; // Next tag: 5 message CallStackProfile { // Describes an entry in the callstack. message Entry { // Instruction pointer subtracted by module base. optional uint64 address = 1; // Index to the module identifier in |module_ids| of CallStackProfile. optional int32 module_id_index = 2; } // A sample consisting of one or more callstacks with the same stack frames // and instruction pointers. message Sample { // The callstack. Sample.entries[0] represents the call on the top of the // stack. repeated Entry entry = 1; // Number of times this stack signature occurs. optional int64 count = 2; } // Uniquely identifies a module. message ModuleIdentifier { // A hash that uniquely identifies a particular program version with high // probability. This is parsed from headers of the loaded module. // For binaries generated by GNU tools: // Contents of the .note.gnu.build-id field. // On Windows: // GUID + AGE in the debug image headers of a module. optional string build_id = 1; // MD5Sum Prefix of the module name. This is the same hashing scheme as used // to hash UMA histogram names. optional fixed64 name_md5_prefix = 2; } // The callstack and counts. repeated Sample sample = 1; // List of module ids found in this sample. repeated ModuleIdentifier module_id = 2; // Duration of this profile. optional int32 profile_duration_ms = 3; // Time between samples. optional int32 sampling_period_ms = 4; }