/*
|
* 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<const char**>(argv), &input, &output,
|
&overwriteOutput)) {
|
PrintUsage();
|
return EXIT_FAILURE;
|
}
|
|
const auto perf_data = ReadFileToString(input);
|
const auto raw_perf_data = static_cast<const void*>(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;
|
}
|