使用linux中的gcc我可以为崩溃添加处理程序(例如SIGSEGV)并将堆栈跟踪写入日志,如此
signal(SIGSEGV, signalHandler); // Register for SIGSEGV
...
void signalHandler(int signal)
{
void* addrBuffer[100];
backtrace(addrBuffer, 100);
// print addresses to log
exit(1);
}
然后使用addr2line函数,我可以获得人类可读的堆栈跟踪。
这种方法的优点是
- works on release builds with no symbols/debug info
- works on end user/production installs
假设我可以获取日志文件,我可以调试用户崩溃。
有没有办法在Windows中用Visual c ++做类似的事情?