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

Side by Side Diff: crash_collector.h

Issue 3436029: crash-reporter: Send OS version at time of crash and related improvements (Closed) Base URL: http://git.chromium.org/git/crash-reporter.git
Patch Set: respond to petkov review Created 10 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
« no previous file with comments | « no previous file | crash_collector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS 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 #ifndef _CRASH_REPORTER_CRASH_COLLECTOR_H_ 5 #ifndef _CRASH_REPORTER_CRASH_COLLECTOR_H_
6 #define _CRASH_REPORTER_CRASH_COLLECTOR_H_ 6 #define _CRASH_REPORTER_CRASH_COLLECTOR_H_
7 7
8 #include <sys/stat.h>
9
10 #include <map>
8 #include <string> 11 #include <string>
9 #include <sys/stat.h>
10 12
11 #include "gtest/gtest_prod.h" // for FRIEND_TEST 13 #include "gtest/gtest_prod.h" // for FRIEND_TEST
12 14
13 class FilePath; 15 class FilePath;
14 class SystemLogging; 16 class SystemLogging;
15 17
16 // User crash collector. 18 // User crash collector.
17 class CrashCollector { 19 class CrashCollector {
18 public: 20 public:
19 typedef void (*CountCrashFunction)(); 21 typedef void (*CountCrashFunction)();
20 typedef bool (*IsFeedbackAllowedFunction)(); 22 typedef bool (*IsFeedbackAllowedFunction)();
21 23
22 CrashCollector(); 24 CrashCollector();
23 25
24 virtual ~CrashCollector(); 26 virtual ~CrashCollector();
25 27
26 // Initialize the crash collector for detection of crashes, given a 28 // Initialize the crash collector for detection of crashes, given a
27 // crash counting function, metrics collection enabled oracle, and 29 // crash counting function, metrics collection enabled oracle, and
28 // system logger facility. 30 // system logger facility.
29 void Initialize(CountCrashFunction count_crash, 31 void Initialize(CountCrashFunction count_crash,
30 IsFeedbackAllowedFunction is_metrics_allowed, 32 IsFeedbackAllowedFunction is_metrics_allowed,
31 SystemLogging *logger); 33 SystemLogging *logger);
32 34
33 protected: 35 protected:
34 friend class CrashCollectorTest; 36 friend class CrashCollectorTest;
35 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityOverCore); 37 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityCorrectBasename);
36 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityOverNonCore); 38 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityStrangeNames);
39 FRIEND_TEST(CrashCollectorTest, CheckHasCapacityUsual);
37 FRIEND_TEST(CrashCollectorTest, GetCrashDirectoryInfo); 40 FRIEND_TEST(CrashCollectorTest, GetCrashDirectoryInfo);
38 FRIEND_TEST(CrashCollectorTest, FormatDumpBasename); 41 FRIEND_TEST(CrashCollectorTest, FormatDumpBasename);
39 FRIEND_TEST(CrashCollectorTest, Initialize); 42 FRIEND_TEST(CrashCollectorTest, Initialize);
43 FRIEND_TEST(CrashCollectorTest, ReadKeyValueFile);
44 FRIEND_TEST(CrashCollectorTest, Sanitize);
40 45
41 // Set maximum enqueued crashes in a crash directory. 46 // Set maximum enqueued crashes in a crash directory.
42 static const int kMaxCrashDirectorySize; 47 static const int kMaxCrashDirectorySize;
43 48
49 // Return a filename that has only [a-z0-1_] characters by mapping
50 // all others into '_'.
51 std::string Sanitize(const std::string &name);
52
44 // For testing, set the directory always returned by 53 // For testing, set the directory always returned by
45 // GetCreatedCrashDirectoryByEuid. 54 // GetCreatedCrashDirectoryByEuid.
46 void ForceCrashDirectory(const char *forced_directory) { 55 void ForceCrashDirectory(const char *forced_directory) {
47 forced_crash_directory_ = forced_directory; 56 forced_crash_directory_ = forced_directory;
48 } 57 }
49 58
50 FilePath GetCrashDirectoryInfo(uid_t process_euid, 59 FilePath GetCrashDirectoryInfo(uid_t process_euid,
51 uid_t default_user_id, 60 uid_t default_user_id,
52 gid_t default_user_group, 61 gid_t default_user_group,
53 mode_t *mode, 62 mode_t *mode,
(...skipping 11 matching lines...) Expand all
65 74
66 // Format crash name based on components. 75 // Format crash name based on components.
67 std::string FormatDumpBasename(const std::string &exec_name, 76 std::string FormatDumpBasename(const std::string &exec_name,
68 time_t timestamp, 77 time_t timestamp,
69 pid_t pid); 78 pid_t pid);
70 79
71 // Check given crash directory still has remaining capacity for another 80 // Check given crash directory still has remaining capacity for another
72 // crash. 81 // crash.
73 bool CheckHasCapacity(const FilePath &crash_directory); 82 bool CheckHasCapacity(const FilePath &crash_directory);
74 83
84 // Read the given file of form [<key><separator><value>\n...] and return
85 // a map of its contents.
86 bool ReadKeyValueFile(const FilePath &file,
87 char separator,
88 std::map<std::string, std::string> *dictionary);
89
90 // Write a file of metadata about crash.
91 void WriteCrashMetaData(const FilePath &meta_path,
92 const std::string &exec_name);
93
75 CountCrashFunction count_crash_function_; 94 CountCrashFunction count_crash_function_;
76 IsFeedbackAllowedFunction is_feedback_allowed_function_; 95 IsFeedbackAllowedFunction is_feedback_allowed_function_;
77 SystemLogging *logger_; 96 SystemLogging *logger_;
78 const char *forced_crash_directory_; 97 const char *forced_crash_directory_;
79 }; 98 };
80 99
81 #endif // _CRASH_REPORTER_CRASH_COLLECTOR_H_ 100 #endif // _CRASH_REPORTER_CRASH_COLLECTOR_H_
OLDNEW
« no previous file with comments | « no previous file | crash_collector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698