At work, our software runs on Windows and Mac OS. I’m trying to reuse as much code as possible; not through some fancy cross-platform tools but by simply writing in portable C or C++ code and by using class wrappers that can each be implemented in the native platform. One thing I’ve been pretty pleased with XCode is it’s support of mixing Objective-C and C++ code fairly seamlessly.
Recently, in trying to port some C++ Windows code over I started having some memory crashes. Unfortunately the XCode debugger was of very little help with the stack trace not including any calls from my code. This was an excellent thread on some techniques to troubleshoot EXC_BAD_ACCESS problems. Fortunately, I didn’t have to try all the various techniques listed. After reading the entire thread I decided to pursue the notion that I might be over-releasing an object (though why should this be a problem? A warning perhaps but seems once a reference counter is down to 0 calling release again should be harmless). This DID lead me to the offending code so I was able to fix my problem without wasting too much time. Once again, the developer community saved me hours if not days of debugging. How did we get along as programmers before the Web?