Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: base/debug/trace_event.h

Issue 7981004: add classes trace_analyzer::Query and TraceAnalyzer to make it easy to search through trace data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Trace events are for tracking application performance. 5 // Trace events are for tracking application performance.
6 // 6 //
7 // Events are issued against categories. Whereas LOG's 7 // Events are issued against categories. Whereas LOG's
8 // categories are statically defined, TRACE categories are created 8 // categories are statically defined, TRACE categories are created
9 // implicitly with a string. For example: 9 // implicitly with a string. For example:
10 // TRACE_EVENT_INSTANT0("MY_SUBSYSTEM", "SomeImportantEvent") 10 // TRACE_EVENT_INSTANT0("MY_SUBSYSTEM", "SomeImportantEvent")
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 return value; 396 return value;
397 } 397 }
398 398
399 static TraceValue ForceCopy(const TraceValue& rhs) { 399 static TraceValue ForceCopy(const TraceValue& rhs) {
400 TraceValue value(rhs); 400 TraceValue value(rhs);
401 if (value.type_ == TRACE_TYPE_STATIC_STRING && value.as_string()) 401 if (value.type_ == TRACE_TYPE_STATIC_STRING && value.as_string())
402 value.type_ = TRACE_TYPE_STRING; 402 value.type_ = TRACE_TYPE_STRING;
403 return value; 403 return value;
404 } 404 }
405 405
406 bool is_string() const {
407 return type_ == TRACE_TYPE_STRING || type_ == TRACE_TYPE_STATIC_STRING;
408 }
409
406 void AppendAsJSON(std::string* out) const; 410 void AppendAsJSON(std::string* out) const;
407 411
408 Type type() const { 412 Type type() const {
409 return type_; 413 return type_;
410 } 414 }
411 uint64 as_uint() const { 415 uint64 as_uint() const {
412 DCHECK_EQ(TRACE_TYPE_UINT, type_); 416 DCHECK_EQ(TRACE_TYPE_UINT, type_);
413 return value_.as_uint; 417 return value_.as_uint;
414 } 418 }
415 bool as_bool() const { 419 bool as_bool() const {
416 DCHECK_EQ(TRACE_TYPE_BOOL, type_); 420 DCHECK_EQ(TRACE_TYPE_BOOL, type_);
417 return value_.as_bool; 421 return value_.as_bool;
418 } 422 }
419 int64 as_int() const { 423 int64 as_int() const {
420 DCHECK_EQ(TRACE_TYPE_INT, type_); 424 DCHECK_EQ(TRACE_TYPE_INT, type_);
421 return value_.as_int; 425 return value_.as_int;
422 } 426 }
423 double as_double() const { 427 double as_double() const {
424 DCHECK_EQ(TRACE_TYPE_DOUBLE, type_); 428 DCHECK_EQ(TRACE_TYPE_DOUBLE, type_);
425 return value_.as_double; 429 return value_.as_double;
426 } 430 }
427 const void* as_pointer() const { 431 const void* as_pointer() const {
428 DCHECK_EQ(TRACE_TYPE_POINTER, type_); 432 DCHECK_EQ(TRACE_TYPE_POINTER, type_);
429 return value_.as_pointer; 433 return value_.as_pointer;
430 } 434 }
431 const char* as_string() const { 435 const char* as_string() const {
432 DCHECK(type_ == TRACE_TYPE_STRING || type_ == TRACE_TYPE_STATIC_STRING); 436 DCHECK(is_string());
433 return value_.as_string; 437 return value_.as_string;
434 } 438 }
435 const char** as_assignable_string() { 439 const char** as_assignable_string() {
436 DCHECK_EQ(TRACE_TYPE_STRING, type_); 440 DCHECK_EQ(TRACE_TYPE_STRING, type_);
437 return &value_.as_string; 441 return &value_.as_string;
438 } 442 }
439 443
440 private: 444 private:
441 union Value { 445 union Value {
442 bool as_bool; 446 bool as_bool;
(...skipping 19 matching lines...) Expand all
462 unsigned long thread_id, 466 unsigned long thread_id,
463 TimeTicks timestamp, 467 TimeTicks timestamp,
464 TraceEventPhase phase, 468 TraceEventPhase phase,
465 const TraceCategory* category, 469 const TraceCategory* category,
466 const char* name, 470 const char* name,
467 const char* arg1_name, const TraceValue& arg1_val, 471 const char* arg1_name, const TraceValue& arg1_val,
468 const char* arg2_name, const TraceValue& arg2_val, 472 const char* arg2_name, const TraceValue& arg2_val,
469 bool copy); 473 bool copy);
470 ~TraceEvent(); 474 ~TraceEvent();
471 475
476 static const char* GetPhaseStr(TraceEventPhase phase);
477 static TraceEventPhase GetPhase(const char* phase);
478
472 // Serialize event data to JSON 479 // Serialize event data to JSON
473 static void AppendEventsAsJSON(const std::vector<TraceEvent>& events, 480 static void AppendEventsAsJSON(const std::vector<TraceEvent>& events,
474 size_t start, 481 size_t start,
475 size_t count, 482 size_t count,
476 std::string* out); 483 std::string* out);
477 void AppendAsJSON(std::string* out) const; 484 void AppendAsJSON(std::string* out) const;
478 485
479 TimeTicks timestamp() const { return timestamp_; } 486 TimeTicks timestamp() const { return timestamp_; }
480 487
481 // Exposed for unittesting: 488 // Exposed for unittesting:
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 Data* p_data_; 686 Data* p_data_;
680 Data data_; 687 Data data_;
681 }; 688 };
682 689
683 } // namespace internal 690 } // namespace internal
684 691
685 } // namespace debug 692 } // namespace debug
686 } // namespace base 693 } // namespace base
687 694
688 #endif // BASE_DEBUG_TRACE_EVENT_H_ 695 #endif // BASE_DEBUG_TRACE_EVENT_H_
OLDNEW
« no previous file with comments | « base/base.gypi ('k') | base/debug/trace_event.cc » ('j') | base/debug/trace_event_analyzer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698