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

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

Issue 1072133006: Add granular file tracing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@do-initialize
Patch Set: asdf Created 5 years, 7 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
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/trace_event/trace_event_impl.h" 5 #include "base/trace_event/trace_event_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/base_switches.h" 10 #include "base/base_switches.h"
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 public: 299 public:
300 TraceBufferVector(size_t max_chunks) 300 TraceBufferVector(size_t max_chunks)
301 : in_flight_chunk_count_(0), 301 : in_flight_chunk_count_(0),
302 current_iteration_index_(0), 302 current_iteration_index_(0),
303 max_chunks_(max_chunks) { 303 max_chunks_(max_chunks) {
304 chunks_.reserve(max_chunks_); 304 chunks_.reserve(max_chunks_);
305 } 305 }
306 306
307 scoped_ptr<TraceBufferChunk> GetChunk(size_t* index) override { 307 scoped_ptr<TraceBufferChunk> GetChunk(size_t* index) override {
308 // This function may be called when adding normal events or indirectly from 308 // This function may be called when adding normal events or indirectly from
309 // AddMetadataEventsWhileLocked(). We can not DECHECK(!IsFull()) because we 309 // AddMetadataEventsWhileLocked(). We can not DCHECK(!IsFull()) because we
310 // have to add the metadata events and flush thread-local buffers even if 310 // have to add the metadata events and flush thread-local buffers even if
311 // the buffer is full. 311 // the buffer is full.
312 *index = chunks_.size(); 312 *index = chunks_.size();
313 chunks_.push_back(NULL); // Put NULL in the slot of a in-flight chunk. 313 chunks_.push_back(NULL); // Put NULL in the slot of a in-flight chunk.
314 ++in_flight_chunk_count_; 314 ++in_flight_chunk_count_;
315 // + 1 because zero chunk_seq is not allowed. 315 // + 1 because zero chunk_seq is not allowed.
316 return scoped_ptr<TraceBufferChunk>( 316 return scoped_ptr<TraceBufferChunk>(
317 new TraceBufferChunk(static_cast<uint32>(*index) + 1)); 317 new TraceBufferChunk(static_cast<uint32>(*index) + 1));
318 } 318 }
319 319
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 *out += arg_names_[i]; 717 *out += arg_names_[i];
718 *out += "\":"; 718 *out += "\":";
719 719
720 if (arg_types_[i] == TRACE_VALUE_TYPE_CONVERTABLE) 720 if (arg_types_[i] == TRACE_VALUE_TYPE_CONVERTABLE)
721 convertable_values_[i]->AppendAsTraceFormat(out); 721 convertable_values_[i]->AppendAsTraceFormat(out);
722 else 722 else
723 AppendValueAsJSON(arg_types_[i], arg_values_[i], out); 723 AppendValueAsJSON(arg_types_[i], arg_values_[i], out);
724 } 724 }
725 *out += "}"; 725 *out += "}";
726 726
727 if (phase_ == TRACE_EVENT_PHASE_COMPLETE) { 727 if (phase_ == TRACE_EVENT_PHASE_COMPLETE ||
728 phase_ == TRACE_EVENT_PHASE_NESTABLE_ASYNC_COMPLETE) {
728 int64 duration = duration_.ToInternalValue(); 729 int64 duration = duration_.ToInternalValue();
729 if (duration != -1) 730 if (duration != -1)
730 StringAppendF(out, ",\"dur\":%" PRId64, duration); 731 StringAppendF(out, ",\"dur\":%" PRId64, duration);
731 if (!thread_timestamp_.is_null()) { 732 if (!thread_timestamp_.is_null()) {
732 int64 thread_duration = thread_duration_.ToInternalValue(); 733 int64 thread_duration = thread_duration_.ToInternalValue();
733 if (thread_duration != -1) 734 if (thread_duration != -1)
734 StringAppendF(out, ",\"tdur\":%" PRId64, thread_duration); 735 StringAppendF(out, ",\"tdur\":%" PRId64, thread_duration);
735 } 736 }
736 } 737 }
737 738
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after
2070 // May be called when a COMPELETE event ends and the unfinished event has been 2071 // May be called when a COMPELETE event ends and the unfinished event has been
2071 // recycled (phase == TRACE_EVENT_PHASE_END and trace_event == NULL). 2072 // recycled (phase == TRACE_EVENT_PHASE_END and trace_event == NULL).
2072 std::string TraceLog::EventToConsoleMessage(unsigned char phase, 2073 std::string TraceLog::EventToConsoleMessage(unsigned char phase,
2073 const TimeTicks& timestamp, 2074 const TimeTicks& timestamp,
2074 TraceEvent* trace_event) { 2075 TraceEvent* trace_event) {
2075 AutoLock thread_info_lock(thread_info_lock_); 2076 AutoLock thread_info_lock(thread_info_lock_);
2076 2077
2077 // The caller should translate TRACE_EVENT_PHASE_COMPLETE to 2078 // The caller should translate TRACE_EVENT_PHASE_COMPLETE to
2078 // TRACE_EVENT_PHASE_BEGIN or TRACE_EVENT_END. 2079 // TRACE_EVENT_PHASE_BEGIN or TRACE_EVENT_END.
2079 DCHECK(phase != TRACE_EVENT_PHASE_COMPLETE); 2080 DCHECK(phase != TRACE_EVENT_PHASE_COMPLETE);
2081 DCHECK(phase != TRACE_EVENT_PHASE_NESTABLE_ASYNC_COMPLETE);
2080 2082
2081 TimeDelta duration; 2083 TimeDelta duration;
2082 int thread_id = trace_event ? 2084 int thread_id = trace_event ?
2083 trace_event->thread_id() : PlatformThread::CurrentId(); 2085 trace_event->thread_id() : PlatformThread::CurrentId();
2084 if (phase == TRACE_EVENT_PHASE_END) { 2086 if (phase == TRACE_EVENT_PHASE_END) {
2085 duration = timestamp - thread_event_start_times_[thread_id].top(); 2087 duration = timestamp - thread_event_start_times_[thread_id].top();
2086 thread_event_start_times_[thread_id].pop(); 2088 thread_event_start_times_[thread_id].pop();
2087 } 2089 }
2088 2090
2089 std::string thread_name = thread_names_[thread_id]; 2091 std::string thread_name = thread_names_[thread_id];
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2152 2154
2153 TimeTicks thread_now = ThreadNow(); 2155 TimeTicks thread_now = ThreadNow();
2154 TimeTicks now = OffsetNow(); 2156 TimeTicks now = OffsetNow();
2155 2157
2156 std::string console_message; 2158 std::string console_message;
2157 if (*category_group_enabled & ENABLED_FOR_RECORDING) { 2159 if (*category_group_enabled & ENABLED_FOR_RECORDING) {
2158 OptionalAutoLock lock(&lock_); 2160 OptionalAutoLock lock(&lock_);
2159 2161
2160 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock); 2162 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock);
2161 if (trace_event) { 2163 if (trace_event) {
2162 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE); 2164 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE ||
2165 trace_event->phase() == TRACE_EVENT_PHASE_NESTABLE_ASYNC_COMPLETE);
2163 trace_event->UpdateDuration(now, thread_now); 2166 trace_event->UpdateDuration(now, thread_now);
2164 #if defined(OS_ANDROID) 2167 #if defined(OS_ANDROID)
2165 trace_event->SendToATrace(); 2168 trace_event->SendToATrace();
2166 #endif 2169 #endif
2167 } 2170 }
2168 2171
2169 if (trace_options() & kInternalEchoToConsole) { 2172 if (trace_options() & kInternalEchoToConsole) {
2170 console_message = EventToConsoleMessage(TRACE_EVENT_PHASE_END, 2173 console_message = EventToConsoleMessage(TRACE_EVENT_PHASE_END,
2171 now, trace_event); 2174 now, trace_event);
2172 } 2175 }
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 } 2637 }
2635 2638
2636 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { 2639 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() {
2637 if (*category_group_enabled_) { 2640 if (*category_group_enabled_) {
2638 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, 2641 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_,
2639 name_, event_handle_); 2642 name_, event_handle_);
2640 } 2643 }
2641 } 2644 }
2642 2645
2643 } // namespace trace_event_internal 2646 } // namespace trace_event_internal
OLDNEW
« base/trace_event/trace_event.h ('K') | « base/trace_event/trace_event.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698