172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef BASE_DEBUG_PROFILER_H 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define BASE_DEBUG_PROFILER_H 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#pragma once 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// The Profiler functions allow usage of the underlying sampling based 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// profiler. If the application has not been built with the necessary 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// flags (-DENABLE_PROFILING and not -DNO_TCMALLOC) then these functions 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// are noops. 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace base { 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace debug { 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Start profiling with the supplied name. 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// {pid} will be replaced by the process' pid and {count} will be replaced 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// by the count of the profile run (starts at 1 with each process). 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid StartProfiling(const std::string& name); 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Stop profiling and write out data. 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid StopProfiling(); 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Force data to be written to file. 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid FlushProfiling(); 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Returns true if process is being profiled. 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool BeingProfiled(); 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace debug 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace base 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // BASE_DEBUG_DEBUGGER_H 36