I've written a little utility that takes an OSX crash report (*.crash) and a Delphi map file, and then gives you a Crash log with the Delphi function names. Set the map file in the Linker Options to detailed. The crash reports are written to ~/Library/Logs/DiagnosticReports. I've only tested it with a couple of crash reports so far, so there might be crash reports that cannot be read yet.

I've written a little utility that takes an OSX crash report (*.crash) and a Delphi map file, and then gives you a Crash log with the Delphi function names. Set the map file in the Linker Options to detailed. The crash reports are written to ~/Library/Logs/DiagnosticReports. I've only tested it with a couple of crash reports so far, so there might be crash reports that cannot be read yet.

If you have this:
0 libsystem_malloc.dylib 0x91384cff tiny_free_list_add_ptr + 33
1 libsystem_malloc.dylib 0x91387f9e tiny_malloc_from_free_list + 1297
2 libsystem_malloc.dylib 0x913880c8 szone_malloc_should_clear + 283
3 libsystem_malloc.dylib 0x9137db6a szone_malloc + 24
4 libsystem_malloc.dylib 0x9138a55b malloc_zone_malloc + 75
5 libsystem_malloc.dylib 0x9138af44 malloc + 52
6 Stackoverflow_test 0x00010fd5 0x10000 + 4053
7 Stackoverflow_test 0x00019dbe @DbgExcNotify+ 8394
8 Stackoverflow_test 0x0001934d @DbgExcNotify+ 5721
9 Stackoverflow_test 0x000194ad @DbgExcNotify+ 6073
10 Stackoverflow_test 0x0001a681 @DbgExcNotify+ 10637
11 Stackoverflow_test 0x00014935 0x10000 + 18741
12 Stackoverflow_test 0x00014711 0x10000 + 18193
13 Stackoverflow_test 0x0001c0db @DbgExcNotify+ 17383
14 Stackoverflow_test 0x0001c12c @DbgExcNotify+ 17464
15 Stackoverflow_test 0x00573109 TMethodImplementationIntercept + 5142857
16 Stackoverflow_test 0x0057312c TMethodImplementationIntercept + 5142892
17 Stackoverflow_test 0x0057312c TMethodImplementationIntercept + 5142892
18 Stackoverflow_test 0x0057312c TMethodImplementationIntercept + 5142892
19 Stackoverflow_test 0x0057312c TMethodImplementationIntercept + 5142892
20 Stackoverflow_test 0x0057312c TMethodImplementationIntercept + 5142892

You'd get the following output. "Unit1.TForm1.Button1Click" is more useful than "TMethodImplementationIntercept".
0 libsystem_malloc.dylib 0x91384cff tiny_free_list_add_ptr + 33
1 libsystem_malloc.dylib 0x91387f9e tiny_malloc_from_free_list + 1297
2 libsystem_malloc.dylib 0x913880c8 szone_malloc_should_clear + 283
3 libsystem_malloc.dylib 0x9137db6a szone_malloc + 24
4 libsystem_malloc.dylib 0x9138a55b malloc_zone_malloc + 75
5 libsystem_malloc.dylib 0x9138af44 malloc + 52
6 Stackoverflow_test 0x00010fd5 System.SysGetMem
7 Stackoverflow_test 0x00019dbe System.@LStrFromString
8 Stackoverflow_test 0x0001934d System.WCharFromChar
9 Stackoverflow_test 0x000194ad System.InternalUStrFromPCharLen
10 Stackoverflow_test 0x0001a681 System.@UStrFromLStr
11 Stackoverflow_test 0x00014935 System.@WriteLString
12 Stackoverflow_test 0x00014711 System.@WriteString
13 Stackoverflow_test 0x0001c0db System.@WriteUInt64
14 Stackoverflow_test 0x0001c12c System.@Write0UInt64
15 Stackoverflow_test 0x00573109 Unit1.TForm1.Button1Click
16 Stackoverflow_test 0x0057312c Unit1.TForm1.Button1Click
17 Stackoverflow_test 0x0057312c Unit1.TForm1.Button1Click
18 Stackoverflow_test 0x0057312c Unit1.TForm1.Button1Click
http://delphi.zierer.info/CrashReportMerger.zip

Comments