This is brought up somewhat often on this group. Problem with throwing an exception in a segfault is that it is undefined behavior in POSIX.
However, I encountered exactly your problem: a null pointer in a big web app. The way I solved it was to sprinkle assert( var !is null ); before I start using or storing the thing, and in the contracts to the functions. Those assertations throw exceptions with a stack trace, but if you compile in release mode, they disappear. I now know if it is null well before the actual deference - back when the null was assigned. This makes finding the root cause of the problem easy, much easier than even tracking down a segfault in the debugger.