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

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

Issue 2583223002: Collect stability data from global and activity scopes (Closed)
Patch Set: signed/unsigned fix 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 // Activity tracking provides a low-overhead method of collecting information 5 // Activity tracking provides a low-overhead method of collecting information
6 // about the state of the application for analysis both while it is running 6 // about the state of the application for analysis both while it is running
7 // and after it has terminated unexpectedly. Its primary purpose is to help 7 // and after it has terminated unexpectedly. Its primary purpose is to help
8 // locate reasons the browser becomes unresponsive by providing insight into 8 // locate reasons the browser becomes unresponsive by providing insight into
9 // what all the various threads and processes are (or were) doing. 9 // what all the various threads and processes are (or were) doing.
10 10
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 } 125 }
126 }; 126 };
127 127
128 // A "null" activity-data that can be passed to indicate "do not change". 128 // A "null" activity-data that can be passed to indicate "do not change".
129 extern const ActivityData kNullActivityData; 129 extern const ActivityData kNullActivityData;
130 130
131 131
132 // A helper class that is used for managing memory allocations within a 132 // A helper class that is used for managing memory allocations within a
133 // persistent memory allocator. Instances of this class are NOT thread-safe. 133 // persistent memory allocator. Instances of this class are NOT thread-safe.
134 // Use from a single thread or protect access with a lock. 134 // Use from a single thread or protect access with a lock.
135 class ActivityTrackerMemoryAllocator { 135 class BASE_EXPORT ActivityTrackerMemoryAllocator {
136 public: 136 public:
137 using Reference = PersistentMemoryAllocator::Reference; 137 using Reference = PersistentMemoryAllocator::Reference;
138 138
139 // Creates a instance for allocating objects of a fixed |object_type|, a 139 // Creates a instance for allocating objects of a fixed |object_type|, a
140 // corresponding |object_free| type, and the |object_size|. An internal 140 // corresponding |object_free| type, and the |object_size|. An internal
141 // cache of the last |cache_size| released references will be kept for 141 // cache of the last |cache_size| released references will be kept for
142 // quick future fetches. If |make_iterable| then allocated objects will 142 // quick future fetches. If |make_iterable| then allocated objects will
143 // be marked "iterable" in the allocator. 143 // be marked "iterable" in the allocator.
144 ActivityTrackerMemoryAllocator(PersistentMemoryAllocator* allocator, 144 ActivityTrackerMemoryAllocator(PersistentMemoryAllocator* allocator,
145 uint32_t object_type, 145 uint32_t object_type,
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 SIGNED_VALUE, 300 SIGNED_VALUE,
301 UNSIGNED_VALUE, 301 UNSIGNED_VALUE,
302 }; 302 };
303 303
304 class BASE_EXPORT TypedValue { 304 class BASE_EXPORT TypedValue {
305 public: 305 public:
306 TypedValue(); 306 TypedValue();
307 TypedValue(const TypedValue& other); 307 TypedValue(const TypedValue& other);
308 ~TypedValue(); 308 ~TypedValue();
309 309
310 ValueType get_type() const { return type; }
bcwhite 2016/12/22 17:21:58 Just type(). Can't believe I forgot that one. :-O
manzagop (departed) 2017/01/10 14:11:22 Done. I switched to type() and renamed the variabl
311
310 // These methods return the extracted value in the correct format. 312 // These methods return the extracted value in the correct format.
311 StringPiece Get() const; 313 StringPiece Get() const;
312 StringPiece GetString() const; 314 StringPiece GetString() const;
313 bool GetBool() const; 315 bool GetBool() const;
314 char GetChar() const; 316 char GetChar() const;
315 int64_t GetInt() const; 317 int64_t GetInt() const;
316 uint64_t GetUint() const; 318 uint64_t GetUint() const;
317 319
318 // These methods return references to process memory as originally provided 320 // These methods return references to process memory as originally provided
319 // to corresponding Set calls. USE WITH CAUTION! There is no guarantee that 321 // to corresponding Set calls. USE WITH CAUTION! There is no guarantee that
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 void ChangeTypeAndData(Activity::Type type, const ActivityData& data); 532 void ChangeTypeAndData(Activity::Type type, const ActivityData& data);
531 533
532 protected: 534 protected:
533 // The thread tracker to which this object reports. It can be null if 535 // The thread tracker to which this object reports. It can be null if
534 // activity tracking is not (yet) enabled. 536 // activity tracking is not (yet) enabled.
535 ThreadActivityTracker* const tracker_; 537 ThreadActivityTracker* const tracker_;
536 538
537 // An identifier that indicates a specific activity on the stack. 539 // An identifier that indicates a specific activity on the stack.
538 ActivityId activity_id_; 540 ActivityId activity_id_;
539 541
542 private:
540 DISALLOW_COPY_AND_ASSIGN(ScopedActivity); 543 DISALLOW_COPY_AND_ASSIGN(ScopedActivity);
541 }; 544 };
542 545
543 // A ThreadActivityTracker runs on top of memory that is managed externally. 546 // A ThreadActivityTracker runs on top of memory that is managed externally.
544 // It must be large enough for the internal header and a few Activity 547 // It must be large enough for the internal header and a few Activity
545 // blocks. See SizeForStackDepth(). 548 // blocks. See SizeForStackDepth().
546 ThreadActivityTracker(void* base, size_t size); 549 ThreadActivityTracker(void* base, size_t size);
547 virtual ~ThreadActivityTracker(); 550 virtual ~ThreadActivityTracker();
548 551
549 // Indicates that an activity has started from a given |origin| address in 552 // Indicates that an activity has started from a given |origin| address in
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 ScopedProcessWaitActivity(const void* program_counter, 955 ScopedProcessWaitActivity(const void* program_counter,
953 const base::Process* process); 956 const base::Process* process);
954 DISALLOW_COPY_AND_ASSIGN(ScopedProcessWaitActivity); 957 DISALLOW_COPY_AND_ASSIGN(ScopedProcessWaitActivity);
955 }; 958 };
956 #endif 959 #endif
957 960
958 } // namespace debug 961 } // namespace debug
959 } // namespace base 962 } // namespace base
960 963
961 #endif // BASE_DEBUG_ACTIVITY_TRACKER_H_ 964 #endif // BASE_DEBUG_ACTIVITY_TRACKER_H_
OLDNEW
« no previous file with comments | « no previous file | base/debug/activity_tracker.cc » ('j') | components/browser_watcher/postmortem_report_collector.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698