背景 在有开发环境的机器上,可以调试启动代码,复现问题后,很容易就能定位到问题代码。 但是往往给用户的程序是 Release 版本的 exe ,崩溃后,可能会产生一个 dmp 文件。 问题 [ol]这个 dmp 文件是 Release 版本 exe 产生的,如何根据这个 dmp 定位到问题代码?如果不能根据这个 dmp 文件定位到问题代码,那么是否有其他方式,定位问题代码?是否有定位问题,调试 bug 的其他技巧?关于调试符号( pdb 文件),了解到有符号服务器,可以专门存储符号文件,是否有相关的最佳实践?如何编译,打包,发布,存储符号,调试定位问题? [/ol] dmp, 代码, 定位, release
排除 release 编译环境问题,dmp 没法定位到问题代码,就开对应的参数 例如 zi ,降低优化之类的,注意自己到底是 mingw 还是 msvc ,两者不一样,去找下对应的编译器怎么让 dmp 文件有符号链接。 感觉大概率是什么两边配置对不上。 vs 的话就仔细对比 vcproject 文件,两个环境有啥区别,cmake 注意不要关掉 return 空的警告(曾经在某个 gcc 版本上遇到没写 return debug 好的,release 崩了的情况) 最后实在不行,你永远可以相信打印日志。。。先把作业做了,后面有空再折腾 release 的 dump 文件如何获取堆栈问题