/* * Copyright (c) 2016, Google Inc. * All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "perf_to_profile_lib.h" #include "base/logging.h" #include "perf_data_converter.h" int main(int argc, char** argv) { string input, output; bool overwriteOutput = false; if (!ParseArguments(argc, const_cast(argv), &input, &output, &overwriteOutput)) { PrintUsage(); return EXIT_FAILURE; } const auto perf_data = ReadFileToString(input); const auto raw_perf_data = static_cast(perf_data.data()); const auto profiles = perftools::RawPerfDataToProfiles( raw_perf_data, perf_data.length(), {}, perftools::kNoLabels, perftools::kNoOptions); // With kNoOptions, all of the PID profiles should be merged into a // single one. if (profiles.size() != 1) { LOG(FATAL) << "Expected profile vector to have one element."; } const auto& profile = profiles[0]->data; std::ofstream outFile; CreateFile(output, &outFile, overwriteOutput); profile.SerializeToOstream(&outFile); return EXIT_SUCCESS; }