11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include <windows.h> 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include <stdlib.h> 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include <tchar.h> 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/at_exit.h" 101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/command_line.h" 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/files/file_path.h" 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/logging.h" 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "components/breakpad/tools/crash_service.h" 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int __stdcall wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd_line, 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int show_mode) { 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Manages the destruction of singletons. 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) base::AtExitManager exit_manager; 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) CommandLine::Init(0, NULL); 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Logging to stderr. 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) logging::LoggingSettings settings; 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) logging::InitLogging(settings); 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Logging with pid, tid and timestamp. 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) logging::SetLogItems(true, true, true, false); 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "session start. cmdline is [" << cmd_line << "]"; 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) breakpad::CrashService crash_service; 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (!crash_service.Initialize(base::FilePath(), base::FilePath())) 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return 1; 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "ready to process crash requests"; 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Enter the message loop. 381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int retv = crash_service.ProcessingLoop(); 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Time to exit. 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) VLOG(1) << "session end. return code is " << retv; 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return retv; 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 43