macprang

Welcome!

Thank you! Welcome to you too!

Erm, so what is this then?

An open-source, BSD-licensed Python program that can apply a CodeWarrior CFM link map to a Mac OS X crash log.

Why would I want that?

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.

How do I use it?

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

It sounds too easy.

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

Any other limitations?

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.

OK, how do I download it?

From the project page or this direct download link (40KB).

You can also download directly from the CVS repository.

How should I report any bugs?

Via sourceforge. Click the "Bugs" link in the header, then click "Submit New". Or use this direct link.

How should I contribute any patches or enhancements?

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.

How do I get developer check-in rights?

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.

Why Python?

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.

Is there anyone you'd like to thank?

Yes, meeroh for suggesting using c++filt to demangle C++ names and sourceforge for hosting us:

SourceForge.net Logo