aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-09-30 21:40:41 +0000
committernealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-09-30 21:40:41 +0000
commitc84c9e7bb3aac01e5e0dd336ce823e39ae463e85 (patch)
treec6d4c1fd27c4cb5bf0b4f00561ecae8b131f49f8
parentFix compilation of OS X handler on PPC with 10.5 SDK. r=nealsid at http://br... (diff)
downloadbreakpad-c84c9e7bb3aac01e5e0dd336ce823e39ae463e85.tar.xz
Modification to crash_report to process a directory of .DMP files
http://breakpad.appspot.com/31001 R=nealsid A=krisr git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@405 4c0a9323-5329-0410-9bdc-e9ce6186880e
-rw-r--r--src/tools/mac/crash_report/crash_report.mm33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/tools/mac/crash_report/crash_report.mm b/src/tools/mac/crash_report/crash_report.mm
index 344eaf97..22d2a18e 100644
--- a/src/tools/mac/crash_report/crash_report.mm
+++ b/src/tools/mac/crash_report/crash_report.mm
@@ -222,10 +222,8 @@ static void PrintModules(const CodeModules *modules) {
}
}
-//=============================================================================
-static void Start(Options *options) {
- string minidump_file([options->minidumpPath fileSystemRepresentation]);
-
+static void ProcessSingleReport(Options *options, NSString *file_path) {
+ string minidump_file([file_path fileSystemRepresentation]);
BasicSourceLineResolver resolver;
string search_dir = options->searchDir ?
[options->searchDir fileSystemRepresentation] : "";
@@ -304,12 +302,37 @@ static void Start(Options *options) {
printf("\nThread %d:", requesting_thread);
PrintRegisters(process_state.threads()->at(requesting_thread), cpu);
}
-
+
// Print information about modules
PrintModules(process_state.modules());
}
//=============================================================================
+static void Start(Options *options) {
+ NSFileManager *manager = [NSFileManager defaultManager];
+ NSString *minidump_path = options->minidumpPath;
+ BOOL is_dir = NO;
+ BOOL file_exists = [manager fileExistsAtPath:minidump_path
+ isDirectory:&is_dir];
+ if (file_exists && is_dir) {
+ NSDirectoryEnumerator *enumerator =
+ [manager enumeratorAtPath:minidump_path];
+ NSString *current_file = nil;
+ while ((current_file = [enumerator nextObject])) {
+ if ([[current_file pathExtension] isEqualTo:@"dmp"]) {
+ printf("Attempting to process report: %s\n",
+ [current_file cStringUsingEncoding:NSASCIIStringEncoding]);
+ NSString *full_path =
+ [minidump_path stringByAppendingPathComponent:current_file];
+ ProcessSingleReport(options, full_path);
+ }
+ }
+ } else if (file_exists) {
+ ProcessSingleReport(options, minidump_path);
+ }
+}
+
+//=============================================================================
static void Usage(int argc, const char *argv[]) {
fprintf(stderr, "Convert a minidump to a crash report. Breakpad symbol "
"files will be used (or created if missing) in /tmp.\n"