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

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

Issue 2544853003: Store log messages in global activity tracker. (Closed)
Patch Set: added comment about NUL terminator Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/activity_analyzer.h" 5 #include "base/debug/activity_analyzer.h"
6 6
7 #include "base/files/file.h" 7 #include "base/files/file.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/memory_mapped_file.h" 9 #include "base/files/memory_mapped_file.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 } 76 }
77 77
78 ThreadActivityAnalyzer* GlobalActivityAnalyzer::GetAnalyzerForThread( 78 ThreadActivityAnalyzer* GlobalActivityAnalyzer::GetAnalyzerForThread(
79 const ThreadKey& key) { 79 const ThreadKey& key) {
80 auto found = analyzers_.find(key); 80 auto found = analyzers_.find(key);
81 if (found == analyzers_.end()) 81 if (found == analyzers_.end())
82 return nullptr; 82 return nullptr;
83 return found->second.get(); 83 return found->second.get();
84 } 84 }
85 85
86 std::vector<std::string> GlobalActivityAnalyzer::GetLogMessages() {
87 std::vector<std::string> messages;
88 PersistentMemoryAllocator::Reference ref;
89
90 PersistentMemoryAllocator::Iterator iter(allocator_.get());
91 while ((ref = iter.GetNextOfType(
92 GlobalActivityTracker::kTypeIdGlobalLogMessage)) != 0) {
93 const char* message = allocator_->GetAsArray<char>(
94 ref, GlobalActivityTracker::kTypeIdGlobalLogMessage,
95 PersistentMemoryAllocator::kSizeAny);
96 if (message)
97 messages.push_back(message);
98 }
99
100 return messages;
101 }
102
86 GlobalActivityAnalyzer::ProgramLocation 103 GlobalActivityAnalyzer::ProgramLocation
87 GlobalActivityAnalyzer::GetProgramLocationFromAddress(uint64_t address) { 104 GlobalActivityAnalyzer::GetProgramLocationFromAddress(uint64_t address) {
88 // TODO(bcwhite): Implement this. 105 // TODO(bcwhite): Implement this.
89 return { 0, 0 }; 106 return { 0, 0 };
90 } 107 }
91 108
92 void GlobalActivityAnalyzer::PrepareAllAnalyzers() { 109 void GlobalActivityAnalyzer::PrepareAllAnalyzers() {
93 // Fetch all the records. This will retrieve only ones created since the 110 // Fetch all the records. This will retrieve only ones created since the
94 // last run since the PMA iterator will continue from where it left off. 111 // last run since the PMA iterator will continue from where it left off.
95 uint32_t type; 112 uint32_t type;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 // Add this analyzer to the map of known ones, indexed by a unique thread 144 // Add this analyzer to the map of known ones, indexed by a unique thread
128 // identifier. 145 // identifier.
129 DCHECK(!base::ContainsKey(analyzers_, analyzer->GetThreadKey())); 146 DCHECK(!base::ContainsKey(analyzers_, analyzer->GetThreadKey()));
130 analyzer->allocator_reference_ = ref; 147 analyzer->allocator_reference_ = ref;
131 analyzers_[analyzer->GetThreadKey()] = std::move(analyzer); 148 analyzers_[analyzer->GetThreadKey()] = std::move(analyzer);
132 } 149 }
133 } 150 }
134 151
135 } // namespace debug 152 } // namespace debug
136 } // namespace base 153 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698