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

Side by Side Diff: chrome/tools/crash_service/main.cc

Issue 26688006: Move CrashService class to breakpad component (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 7 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/tools/crash_service/crash_service.h"
6
7 #include <windows.h> 5 #include <windows.h>
8 #include <stdlib.h> 6 #include <stdlib.h>
9 #include <tchar.h> 7 #include <tchar.h>
10 8
11 #include "base/at_exit.h" 9 #include "base/at_exit.h"
12 #include "base/command_line.h" 10 #include "base/command_line.h"
13 #include "base/file_util.h" 11 #include "base/file_util.h"
14 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/path_service.h"
14 #include "chrome/common/chrome_constants.h"
15 #include "chrome/common/chrome_paths.h"
16 #include "components/breakpad/tools/crash_service.h"
15 17
16 namespace { 18 namespace {
17 19
18 const wchar_t kStandardLogFile[] = L"operation_log.txt"; 20 const wchar_t kStandardLogFile[] = L"operation_log.txt";
19 21
20 bool GetCrashServiceDirectory(base::FilePath* dir) { 22 bool GetCrashServiceDirectory(base::FilePath* dir) {
21 base::FilePath temp_dir; 23 base::FilePath temp_dir;
22 if (!file_util::GetTempDir(&temp_dir)) 24 if (!file_util::GetTempDir(&temp_dir))
23 return false; 25 return false;
24 temp_dir = temp_dir.Append(L"chrome_crashes"); 26 temp_dir = temp_dir.Append(L"chrome_crashes");
25 if (!base::PathExists(temp_dir)) { 27 if (!base::PathExists(temp_dir)) {
26 if (!file_util::CreateDirectory(temp_dir)) 28 if (!file_util::CreateDirectory(temp_dir))
27 return false; 29 return false;
28 } 30 }
29 *dir = temp_dir; 31 *dir = temp_dir;
30 return true; 32 return true;
31 } 33 }
32 34
33 } // namespace. 35 } // namespace.
34 36
35 int __stdcall wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd_line, 37 int __stdcall wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd_line,
36 int show_mode) { 38 int show_mode) {
37 // Manages the destruction of singletons. 39 // Manages the destruction of singletons.
38 base::AtExitManager exit_manager; 40 base::AtExitManager exit_manager;
39 41
40 CommandLine::Init(0, NULL); 42 CommandLine::Init(0, NULL);
41 43
44 chrome::RegisterPathProvider();
45
42 // We use/create a directory under the user's temp folder, for logging. 46 // We use/create a directory under the user's temp folder, for logging.
43 base::FilePath operating_dir; 47 base::FilePath operating_dir;
44 GetCrashServiceDirectory(&operating_dir); 48 GetCrashServiceDirectory(&operating_dir);
45 base::FilePath log_file = operating_dir.Append(kStandardLogFile); 49 base::FilePath log_file = operating_dir.Append(kStandardLogFile);
46 50
47 // Logging to stderr (to help with debugging failures on the 51 // Logging to stderr (to help with debugging failures on the
48 // buildbots) and to a file. 52 // buildbots) and to a file.
49 logging::LoggingSettings settings; 53 logging::LoggingSettings settings;
50 settings.logging_dest = logging::LOG_TO_ALL; 54 settings.logging_dest = logging::LOG_TO_ALL;
51 settings.log_file = log_file.value().c_str(); 55 settings.log_file = log_file.value().c_str();
52 logging::InitLogging(settings); 56 logging::InitLogging(settings);
53 // Logging with pid, tid and timestamp. 57 // Logging with pid, tid and timestamp.
54 logging::SetLogItems(true, true, true, false); 58 logging::SetLogItems(true, true, true, false);
55 59
56 VLOG(1) << "session start. cmdline is [" << cmd_line << "]"; 60 VLOG(1) << "session start. cmdline is [" << cmd_line << "]";
57 61
58 CrashService crash_service(operating_dir.value()); 62 base::FilePath dumps_path;
59 if (!crash_service.Initialize(::GetCommandLineW())) 63 if (!PathService::Get(chrome::DIR_CRASH_DUMPS, &dumps_path)) {
64 LOG(ERROR) << "could not get DIR_CRASH_DUMPS";
65 return 1;
66 }
67
68 breakpad::CrashService crash_service;
69 if (!crash_service.Initialize(operating_dir, dumps_path))
60 return 1; 70 return 1;
61 71
62 VLOG(1) << "ready to process crash requests"; 72 VLOG(1) << "ready to process crash requests";
63 73
64 // Enter the message loop. 74 // Enter the message loop.
65 int retv = crash_service.ProcessingLoop(); 75 int retv = crash_service.ProcessingLoop();
66 // Time to exit. 76 // Time to exit.
67 VLOG(1) << "session end. return code is " << retv; 77 VLOG(1) << "session end. return code is " << retv;
68 return retv; 78 return retv;
69 } 79 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698