aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2007-05-30 12:14:09 +0000
committerted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2007-05-30 12:14:09 +0000
commit90e050e5982a5cddc3d544d103eccc06be42f184 (patch)
tree86e0df90d05449470ce48c0389940f6d7bb8eb6a /src
parentIssue 184 - MinidumpModule::code_identifier doesn't handle MD_OS_LINUX. r=mento (diff)
downloadbreakpad-90e050e5982a5cddc3d544d103eccc06be42f184.tar.xz
Issue 143 - MinidumpProcessor should extract number of processors. r=mento
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@180 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src')
-rw-r--r--src/google_breakpad/processor/system_info.h8
-rw-r--r--src/processor/minidump_processor.cc2
-rw-r--r--src/processor/minidump_stackwalk.cc11
3 files changed, 18 insertions, 3 deletions
diff --git a/src/google_breakpad/processor/system_info.h b/src/google_breakpad/processor/system_info.h
index 49776b75..fdbdbfd6 100644
--- a/src/google_breakpad/processor/system_info.h
+++ b/src/google_breakpad/processor/system_info.h
@@ -43,6 +43,9 @@ using std::string;
struct SystemInfo {
public:
+ SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(),
+ cpu_count(0) {}
+
// Resets the SystemInfo object to its default values.
void Clear() {
os.clear();
@@ -50,6 +53,7 @@ struct SystemInfo {
os_version.clear();
cpu.clear();
cpu_info.clear();
+ cpu_count = 0;
}
// A string identifying the operating system, such as "Windows NT",
@@ -82,6 +86,10 @@ struct SystemInfo {
// present in the dump, or additional identifying information is not
// defined for the CPU family, this field will be empty.
string cpu_info;
+
+ // The number of processors in the system. Will be greater than one for
+ // multi-core systems.
+ int cpu_count;
};
} // namespace google_breakpad
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
index 6ab8c07d..9b426d53 100644
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -290,6 +290,8 @@ bool MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) {
}
}
+ info->cpu_count = raw_system_info->number_of_processors;
+
return true;
}
diff --git a/src/processor/minidump_stackwalk.cc b/src/processor/minidump_stackwalk.cc
index 299dd0e7..01b601c7 100644
--- a/src/processor/minidump_stackwalk.cc
+++ b/src/processor/minidump_stackwalk.cc
@@ -300,6 +300,9 @@ static void PrintProcessState(const ProcessState& process_state) {
// This field is optional.
printf(" %s\n", cpu_info.c_str());
}
+ printf(" %d CPU%s\n",
+ process_state.system_info()->cpu_count,
+ process_state.system_info()->cpu_count != 1 ? "s" : "");
printf("\n");
// Print crash information.
@@ -339,16 +342,18 @@ static void PrintProcessStateMachineReadable(const ProcessState& process_state)
{
// Print OS and CPU information.
// OS|{OS Name}|{OS Version}
- // CPU|{CPU Name}|{CPU Info}
+ // CPU|{CPU Name}|{CPU Info}|{Number of CPUs}
printf("OS%c%s%c%s\n", kOutputSeparator,
StripSeparator(process_state.system_info()->os).c_str(),
kOutputSeparator,
StripSeparator(process_state.system_info()->os_version).c_str());
- printf("CPU%c%s%c%s\n", kOutputSeparator,
+ printf("CPU%c%s%c%s%c%d\n", kOutputSeparator,
StripSeparator(process_state.system_info()->cpu).c_str(),
kOutputSeparator,
// this may be empty
- StripSeparator(process_state.system_info()->cpu_info).c_str());
+ StripSeparator(process_state.system_info()->cpu_info).c_str(),
+ kOutputSeparator,
+ process_state.system_info()->cpu_count);
int requesting_thread = process_state.requesting_thread();