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

Side by Side Diff: base/debug/trace_event_impl.cc

Issue 15774010: Add TRACE_EVENT_IS_NEW_TRACE as a way to snapshot objects at start of recording (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: parts for enne Created 7 years, 6 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "base/debug/trace_event_impl.h" 5 #include "base/debug/trace_event_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/leak_annotations.h" 10 #include "base/debug/leak_annotations.h"
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 } 766 }
767 } 767 }
768 if (!(ret & RECORD_UNTIL_FULL) && !(ret & RECORD_CONTINUOUSLY)) 768 if (!(ret & RECORD_UNTIL_FULL) && !(ret & RECORD_CONTINUOUSLY))
769 ret |= RECORD_UNTIL_FULL; // Default when no options are specified. 769 ret |= RECORD_UNTIL_FULL; // Default when no options are specified.
770 770
771 return static_cast<Options>(ret); 771 return static_cast<Options>(ret);
772 } 772 }
773 773
774 TraceLog::TraceLog() 774 TraceLog::TraceLog()
775 : enable_count_(0), 775 : enable_count_(0),
776 num_traces_recorded_(0),
776 logged_events_(NULL), 777 logged_events_(NULL),
777 dispatching_to_observer_list_(false), 778 dispatching_to_observer_list_(false),
778 watch_category_(NULL), 779 watch_category_(NULL),
779 trace_options_(RECORD_UNTIL_FULL), 780 trace_options_(RECORD_UNTIL_FULL),
780 sampling_thread_handle_(0), 781 sampling_thread_handle_(0),
781 category_filter_(CategoryFilter::kDefaultCategoryFilterString) { 782 category_filter_(CategoryFilter::kDefaultCategoryFilterString) {
782 // Trace is enabled or disabled on one thread while other threads are 783 // Trace is enabled or disabled on one thread while other threads are
783 // accessing the enabled flag. We don't care whether edge-case events are 784 // accessing the enabled flag. We don't care whether edge-case events are
784 // traced or not, so we allow races on the enabled flag to keep the trace 785 // traced or not, so we allow races on the enabled flag to keep the trace
785 // macros fast. 786 // macros fast.
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 trace_options_ = options; 921 trace_options_ = options;
921 logged_events_.reset(GetTraceBuffer()); 922 logged_events_.reset(GetTraceBuffer());
922 } 923 }
923 924
924 if (dispatching_to_observer_list_) { 925 if (dispatching_to_observer_list_) {
925 DLOG(ERROR) << 926 DLOG(ERROR) <<
926 "Cannot manipulate TraceLog::Enabled state from an observer."; 927 "Cannot manipulate TraceLog::Enabled state from an observer.";
927 return; 928 return;
928 } 929 }
929 930
931 num_traces_recorded_++;
932
930 dispatching_to_observer_list_ = true; 933 dispatching_to_observer_list_ = true;
931 FOR_EACH_OBSERVER(EnabledStateChangedObserver, enabled_state_observer_list_, 934 FOR_EACH_OBSERVER(EnabledStateChangedObserver, enabled_state_observer_list_,
932 OnTraceLogWillEnable()); 935 OnTraceLogWillEnable());
933 dispatching_to_observer_list_ = false; 936 dispatching_to_observer_list_ = false;
934 937
935 category_filter_ = CategoryFilter(category_filter); 938 category_filter_ = CategoryFilter(category_filter);
936 EnableIncludedCategoryGroups(); 939 EnableIncludedCategoryGroups();
937 940
938 // Not supported in split-dll build. http://crbug.com/237249 941 // Not supported in split-dll build. http://crbug.com/237249
939 #if !defined(CHROME_SPLIT_DLL) 942 #if !defined(CHROME_SPLIT_DLL)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 dispatching_to_observer_list_ = false; 997 dispatching_to_observer_list_ = false;
995 998
996 category_filter_.Clear(); 999 category_filter_.Clear();
997 watch_category_ = NULL; 1000 watch_category_ = NULL;
998 watch_event_name_ = ""; 1001 watch_event_name_ = "";
999 for (int i = 0; i < g_category_index; i++) 1002 for (int i = 0; i < g_category_index; i++)
1000 SetCategoryGroupEnabled(i, false); 1003 SetCategoryGroupEnabled(i, false);
1001 AddThreadNameMetadataEvents(); 1004 AddThreadNameMetadataEvents();
1002 } 1005 }
1003 1006
1007 int TraceLog::GetNumTracesRecorded() {
1008 AutoLock lock(lock_);
1009 if (enable_count_ == 0)
1010 return -1;
1011 return num_traces_recorded_;
1012 }
1013
1004 void TraceLog::AddEnabledStateObserver(EnabledStateChangedObserver* listener) { 1014 void TraceLog::AddEnabledStateObserver(EnabledStateChangedObserver* listener) {
1005 enabled_state_observer_list_.AddObserver(listener); 1015 enabled_state_observer_list_.AddObserver(listener);
1006 } 1016 }
1007 1017
1008 void TraceLog::RemoveEnabledStateObserver( 1018 void TraceLog::RemoveEnabledStateObserver(
1009 EnabledStateChangedObserver* listener) { 1019 EnabledStateChangedObserver* listener) {
1010 enabled_state_observer_list_.RemoveObserver(listener); 1020 enabled_state_observer_list_.RemoveObserver(listener);
1011 } 1021 }
1012 1022
1013 float TraceLog::GetBufferPercentFull() const { 1023 float TraceLog::GetBufferPercentFull() const {
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 0, // num_args 1514 0, // num_args
1505 NULL, // arg_names 1515 NULL, // arg_names
1506 NULL, // arg_types 1516 NULL, // arg_types
1507 NULL, // arg_values 1517 NULL, // arg_values
1508 NULL, // convertable values 1518 NULL, // convertable values
1509 TRACE_EVENT_FLAG_NONE); // flags 1519 TRACE_EVENT_FLAG_NONE); // flags
1510 } 1520 }
1511 } 1521 }
1512 1522
1513 } // namespace trace_event_internal 1523 } // namespace trace_event_internal
1514
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698