Index: src/processor/minidump_stackwalk.cc |
diff --git a/src/processor/minidump_stackwalk.cc b/src/processor/minidump_stackwalk.cc |
index 8f83969fef1be48e0cdcf44273515694712fe95c..05e3d3c0e0029c7feb4868de4c0e9cbc23c20243 100644 |
--- a/src/processor/minidump_stackwalk.cc |
+++ b/src/processor/minidump_stackwalk.cc |
@@ -71,7 +71,8 @@ using google_breakpad::scoped_ptr; |
bool PrintMinidumpProcess(const string &minidump_file, |
const std::vector<string> &symbol_paths, |
bool machine_readable, |
- bool output_stack_contents) { |
+ bool output_stack_contents, |
+ bool output_modules_only) { |
scoped_ptr<SimpleSymbolSupplier> symbol_supplier; |
if (!symbol_paths.empty()) { |
// TODO(mmentovai): check existence of symbol_path if specified? |
@@ -94,7 +95,9 @@ bool PrintMinidumpProcess(const string &minidump_file, |
return false; |
} |
- if (machine_readable) { |
+ if (output_modules_only) { |
+ PrintProcessModules(process_state); |
+ } else if (machine_readable) { |
PrintProcessStateMachineReadable(process_state); |
} else { |
PrintProcessState(process_state, output_stack_contents, &resolver); |
@@ -104,9 +107,10 @@ bool PrintMinidumpProcess(const string &minidump_file, |
} |
void usage(const char *program_name) { |
- fprintf(stderr, "usage: %s [-m|-s] <minidump-file> [symbol-path ...]\n" |
+ fprintf(stderr, "usage: %s [-m|-s|-b] <minidump-file> [symbol-path ...]\n" |
" -m : Output in machine-readable format\n" |
- " -s : Output stack contents\n", |
+ " -s : Output stack contents\n" |
+ " -b : Output contained full module paths\n", |
program_name); |
} |
@@ -123,6 +127,7 @@ int main(int argc, char **argv) { |
const char *minidump_file; |
bool machine_readable = false; |
bool output_stack_contents = false; |
+ bool output_modules_only = false; |
int symbol_path_arg; |
if (strcmp(argv[1], "-m") == 0) { |
@@ -143,6 +148,15 @@ int main(int argc, char **argv) { |
output_stack_contents = true; |
minidump_file = argv[2]; |
symbol_path_arg = 3; |
+ } else if (strcmp(argv[1], "-b") == 0) { |
+ if (argc < 3) { |
+ usage(argv[0]); |
+ return 1; |
+ } |
+ |
+ output_modules_only = true; |
+ minidump_file = argv[2]; |
+ symbol_path_arg = 3; |
} else { |
minidump_file = argv[1]; |
symbol_path_arg = 2; |
@@ -158,5 +172,6 @@ int main(int argc, char **argv) { |
return PrintMinidumpProcess(minidump_file, |
symbol_paths, |
machine_readable, |
- output_stack_contents) ? 0 : 1; |
+ output_stack_contents, |
+ output_modules_only) ? 0 : 1; |
} |