diff options
author | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2009-09-30 21:40:41 +0000 |
---|---|---|
committer | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2009-09-30 21:40:41 +0000 |
commit | c84c9e7bb3aac01e5e0dd336ce823e39ae463e85 (patch) | |
tree | c6d4c1fd27c4cb5bf0b4f00561ecae8b131f49f8 | |
parent | Fix compilation of OS X handler on PPC with 10.5 SDK. r=nealsid at http://br... (diff) | |
download | breakpad-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.mm | 33 |
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" |