| OLD | NEW |
| 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 "base/logging.h" | 5 #include "base/logging.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <io.h> | 8 #include <io.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 typedef HANDLE FileHandle; | 10 typedef HANDLE FileHandle; |
| 11 typedef HANDLE MutexHandle; | 11 typedef HANDLE MutexHandle; |
| 12 // Windows warns on using write(). It prefers _write(). | 12 // Windows warns on using write(). It prefers _write(). |
| 13 #define write(fd, buf, count) _write(fd, buf, static_cast<unsigned int>(count)) | 13 #define write(fd, buf, count) _write(fd, buf, static_cast<unsigned int>(count)) |
| 14 // Windows doesn't define STDERR_FILENO. Define it here. | 14 // Windows doesn't define STDERR_FILENO. Define it here. |
| 15 #define STDERR_FILENO 2 | 15 #define STDERR_FILENO 2 |
| 16 #elif defined(OS_MACOSX) | 16 #elif defined(OS_MACOSX) |
| 17 #include <CoreFoundation/CoreFoundation.h> | |
| 18 #include <mach/mach.h> | 17 #include <mach/mach.h> |
| 19 #include <mach/mach_time.h> | 18 #include <mach/mach_time.h> |
| 20 #include <mach-o/dyld.h> | 19 #include <mach-o/dyld.h> |
| 21 #elif defined(OS_POSIX) | 20 #elif defined(OS_POSIX) |
| 22 #if defined(OS_NACL) | 21 #if defined(OS_NACL) |
| 23 #include <sys/nacl_syscalls.h> | 22 #include <sys/nacl_syscalls.h> |
| 24 #include <sys/time.h> // timespec doesn't seem to be in <time.h> | 23 #include <sys/time.h> // timespec doesn't seem to be in <time.h> |
| 25 #else | 24 #else |
| 26 #include <sys/syscall.h> | 25 #include <sys/syscall.h> |
| 27 #endif | 26 #endif |
| (...skipping 22 matching lines...) Expand all Loading... |
| 50 #include "base/debug/debugger.h" | 49 #include "base/debug/debugger.h" |
| 51 #include "base/debug/stack_trace.h" | 50 #include "base/debug/stack_trace.h" |
| 52 #include "base/eintr_wrapper.h" | 51 #include "base/eintr_wrapper.h" |
| 53 #include "base/string_piece.h" | 52 #include "base/string_piece.h" |
| 54 #include "base/synchronization/lock_impl.h" | 53 #include "base/synchronization/lock_impl.h" |
| 55 #include "base/utf_string_conversions.h" | 54 #include "base/utf_string_conversions.h" |
| 56 #include "base/vlog.h" | 55 #include "base/vlog.h" |
| 57 #if defined(OS_POSIX) | 56 #if defined(OS_POSIX) |
| 58 #include "base/safe_strerror_posix.h" | 57 #include "base/safe_strerror_posix.h" |
| 59 #endif | 58 #endif |
| 60 #if defined(OS_MACOSX) | |
| 61 #include "base/mac/scoped_cftyperef.h" | |
| 62 #include "base/sys_string_conversions.h" | |
| 63 #endif | |
| 64 | 59 |
| 65 namespace logging { | 60 namespace logging { |
| 66 | 61 |
| 67 DcheckState g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 62 DcheckState g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; |
| 68 VlogInfo* g_vlog_info = NULL; | 63 VlogInfo* g_vlog_info = NULL; |
| 69 | 64 |
| 70 const char* const log_severity_names[LOG_NUM_SEVERITIES] = { | 65 const char* const log_severity_names[LOG_NUM_SEVERITIES] = { |
| 71 "INFO", "WARNING", "ERROR", "ERROR_REPORT", "FATAL" }; | 66 "INFO", "WARNING", "ERROR", "ERROR_REPORT", "FATAL" }; |
| 72 | 67 |
| 73 int min_log_level = 0; | 68 int min_log_level = 0; |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 if (CreateProcessW(prog_name, &cmdline[0], NULL, NULL, false, 0, NULL, | 491 if (CreateProcessW(prog_name, &cmdline[0], NULL, NULL, false, 0, NULL, |
| 497 NULL, &startup_info, &process_info)) { | 492 NULL, &startup_info, &process_info)) { |
| 498 WaitForSingleObject(process_info.hProcess, INFINITE); | 493 WaitForSingleObject(process_info.hProcess, INFINITE); |
| 499 CloseHandle(process_info.hThread); | 494 CloseHandle(process_info.hThread); |
| 500 CloseHandle(process_info.hProcess); | 495 CloseHandle(process_info.hProcess); |
| 501 } else { | 496 } else { |
| 502 // debug process broken, let's just do a message box | 497 // debug process broken, let's just do a message box |
| 503 MessageBoxW(NULL, &cmdline[0], L"Fatal error", | 498 MessageBoxW(NULL, &cmdline[0], L"Fatal error", |
| 504 MB_OK | MB_ICONHAND | MB_TOPMOST); | 499 MB_OK | MB_ICONHAND | MB_TOPMOST); |
| 505 } | 500 } |
| 506 #elif defined(OS_MACOSX) | |
| 507 base::mac::ScopedCFTypeRef<CFStringRef> message( | |
| 508 base::SysUTF8ToCFStringRef(str)); | |
| 509 CFUserNotificationDisplayNotice(0, kCFUserNotificationStopAlertLevel, | |
| 510 NULL, NULL, NULL, CFSTR("Fatal Error"), | |
| 511 message, NULL); | |
| 512 #else | 501 #else |
| 513 // We intentionally don't implement a dialog on other platforms. | 502 // We intentionally don't implement a dialog on other platforms. |
| 514 // You can just look at stderr. | 503 // You can just look at stderr. |
| 515 #endif | 504 #endif |
| 516 } | 505 } |
| 517 | 506 |
| 518 #if defined(OS_WIN) | 507 #if defined(OS_WIN) |
| 519 LogMessage::SaveLastError::SaveLastError() : last_error_(::GetLastError()) { | 508 LogMessage::SaveLastError::SaveLastError() : last_error_(::GetLastError()) { |
| 520 } | 509 } |
| 521 | 510 |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 | 808 |
| 820 if (level == LOG_FATAL) | 809 if (level == LOG_FATAL) |
| 821 base::debug::BreakDebugger(); | 810 base::debug::BreakDebugger(); |
| 822 } | 811 } |
| 823 | 812 |
| 824 } // namespace logging | 813 } // namespace logging |
| 825 | 814 |
| 826 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) { | 815 std::ostream& operator<<(std::ostream& out, const wchar_t* wstr) { |
| 827 return out << WideToUTF8(std::wstring(wstr)); | 816 return out << WideToUTF8(std::wstring(wstr)); |
| 828 } | 817 } |
| OLD | NEW |