Thank you! Welcome to you too!
An open-source, BSD-licensed Python program that can apply a CodeWarrior CFM link map to a Mac OS X crash log.
Typically because you've configured the release build of your CodeWarrior Carbon CFM app to omit traceback tables, for space and/or privacy reasons, and therefore can't readily interpret crash logs from your release builds, because they show backtraces as pure hex addresses. This program can decode the hex addresses into function names and offsets, just like your debug build.
Full instructions are included with the download. In summary, you give a command such as:
% decodecrashlog.py MyApp.xMap MyApp.log > MyApp.nice.log
For more help, see the included readme.txt file or use:
% decodecrashlog.py --help
Well, there is a catch. There's an offset between the addresses in CodeWarrior's link map and Mac OS X's crash logs which is rather hard to calculate: the --hints
option to the program sets out our current findings on this subject.
However, if you set things up so that your release build has a traceback entry just for its main() function, then we can figure it all out for you. The --hints
option describes this in full detail:
% decodecrashlog.py --hints
Initially, we only support CodeWarrior Carbon CFM link maps. This may be extended to CodeWarrior Mach-O link maps and/or non CodeWarrior link maps if the project proves successful.
Also, there's no GUI yet: you'll have to run it from the command line. It would be easy to knock out a GUI in Cocoa, and we plan to do so if the project proves successful.
From the project page or this direct download link (40KB).
You can also download directly from the CVS repository.
Via sourceforge. Click the "Bugs" link in the header, then click "Submit New". Or use this direct link.
Via sourceforge. Click the "Patches" link in the header, then click "Submit New". Or use this direct link.
If your patch is reasonable, it will be adopted and you'll be asked whether you'd like to be credited by name, by sourceforge ID, by name and full email address or not at all.
By invitation only: start by contributing patches and enhancements as above. The project admins are looking for both coding competence and a general air of responsibility towards maintaining best practices in the code.
This is the first time I've used Python in anger, and I must say I've been very deeply impressed by it. It's refreshing beyond words to use a language that so freely combines such a small, clean syntax with such a powerful synthesis of procedural, object-oriented and functional techniques.
Yes, meeroh for suggesting using c++filt to demangle C++ names and sourceforge for hosting us: