diff options
author | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2007-01-10 22:47:56 +0000 |
---|---|---|
committer | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2007-01-10 22:47:56 +0000 |
commit | 97d392dc4b60f0099cd7ad8c8a5f06581a532392 (patch) | |
tree | d905546d8bac18be851703c480e2a4dc0a64bc56 /src/processor/minidump_processor.cc | |
parent | Added method to allow adding a file's contents directly. Fixes issue #105. (diff) | |
download | breakpad-97d392dc4b60f0099cd7ad8c8a5f06581a532392.tar.xz |
Communicate OS and CPU to SymbolSupplier (#107). r=bryner
Interface change: moved a few fields around in ProcessState; added new
arguments to Stackwalker and SymbolSupplier.
http://groups.google.com/group/airbag-dev/browse_thread/thread/17e4a48ec3ede932
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@101 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/minidump_processor.cc')
-rw-r--r-- | src/processor/minidump_processor.cc | 102 |
1 files changed, 51 insertions, 51 deletions
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc index dd4c7156..e1dd5e1c 100644 --- a/src/processor/minidump_processor.cc +++ b/src/processor/minidump_processor.cc @@ -59,8 +59,8 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process( assert(header); process_state->time_date_stamp_ = header->time_date_stamp; - process_state->cpu_ = GetCPUInfo(&dump, &process_state->cpu_info_); - process_state->os_ = GetOSInfo(&dump, &process_state->os_version_); + GetCPUInfo(&dump, &process_state->system_info_); + GetOSInfo(&dump, &process_state->system_info_); u_int32_t dump_thread_id = 0; bool has_dump_thread = false; @@ -162,7 +162,8 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process( // (just like the StackFrame objects), and is much more suitable for this // task. scoped_ptr<Stackwalker> stackwalker( - Stackwalker::StackwalkerForCPU(context, + Stackwalker::StackwalkerForCPU(process_state->system_info(), + context, thread_memory, process_state->modules_, supplier_, @@ -202,38 +203,38 @@ static const MDRawSystemInfo* GetSystemInfo(Minidump *dump, } // static -string MinidumpProcessor::GetCPUInfo(Minidump *dump, string *cpu_info) { - if (cpu_info) - cpu_info->clear(); +void MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) { + assert(dump); + assert(info); + + info->cpu.clear(); + info->cpu_info.clear(); MinidumpSystemInfo *system_info; const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info); if (!raw_system_info) - return ""; + return; - string cpu; switch (raw_system_info->processor_architecture) { case MD_CPU_ARCHITECTURE_X86: { - cpu = "x86"; - if (cpu_info) { - const string *cpu_vendor = system_info->GetCPUVendor(); - if (cpu_vendor) { - cpu_info->assign(*cpu_vendor); - cpu_info->append(" "); - } - - char x86_info[36]; - snprintf(x86_info, sizeof(x86_info), "family %u model %u stepping %u", - raw_system_info->processor_level, - raw_system_info->processor_revision >> 8, - raw_system_info->processor_revision & 0xff); - cpu_info->append(x86_info); + info->cpu = "x86"; + const string *cpu_vendor = system_info->GetCPUVendor(); + if (cpu_vendor) { + info->cpu_info = *cpu_vendor; + info->cpu_info.append(" "); } + + char x86_info[36]; + snprintf(x86_info, sizeof(x86_info), "family %u model %u stepping %u", + raw_system_info->processor_level, + raw_system_info->processor_revision >> 8, + raw_system_info->processor_revision & 0xff); + info->cpu_info.append(x86_info); break; } case MD_CPU_ARCHITECTURE_PPC: { - cpu = "ppc"; + info->cpu = "ppc"; break; } @@ -242,43 +243,46 @@ string MinidumpProcessor::GetCPUInfo(Minidump *dump, string *cpu_info) { char cpu_string[7]; snprintf(cpu_string, sizeof(cpu_string), "0x%04x", raw_system_info->processor_architecture); - cpu = cpu_string; + info->cpu = cpu_string; break; } } - - return cpu; } // static -string MinidumpProcessor::GetOSInfo(Minidump *dump, string *os_version) { - if (os_version) - os_version->clear(); +void MinidumpProcessor::GetOSInfo(Minidump *dump, SystemInfo *info) { + assert(dump); + assert(info); + + info->os.clear(); + info->os_short.clear(); + info->os_version.clear(); MinidumpSystemInfo *system_info; const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info); if (!raw_system_info) - return ""; + return; + + info->os_short = system_info->GetOS(); - string os; switch (raw_system_info->platform_id) { case MD_OS_WIN32_NT: { - os = "Windows NT"; + info->os = "Windows NT"; break; } case MD_OS_WIN32_WINDOWS: { - os = "Windows"; + info->os = "Windows"; break; } case MD_OS_MAC_OS_X: { - os = "Mac OS X"; + info->os = "Mac OS X"; break; } case MD_OS_LINUX: { - os = "Linux"; + info->os = "Linux"; break; } @@ -287,27 +291,23 @@ string MinidumpProcessor::GetOSInfo(Minidump *dump, string *os_version) { char os_string[11]; snprintf(os_string, sizeof(os_string), "0x%08x", raw_system_info->platform_id); - os = os_string; + info->os = os_string; break; } } - if (os_version) { - char os_version_string[33]; - snprintf(os_version_string, sizeof(os_version_string), "%u.%u.%u", - raw_system_info->major_version, - raw_system_info->minor_version, - raw_system_info->build_number); - os_version->assign(os_version_string); - - const string *csd_version = system_info->GetCSDVersion(); - if (csd_version) { - os_version->append(" "); - os_version->append(*csd_version); - } + char os_version_string[33]; + snprintf(os_version_string, sizeof(os_version_string), "%u.%u.%u", + raw_system_info->major_version, + raw_system_info->minor_version, + raw_system_info->build_number); + info->os_version = os_version_string; + + const string *csd_version = system_info->GetCSDVersion(); + if (csd_version) { + info->os_version.append(" "); + info->os_version.append(*csd_version); } - - return os; } // static |