windows系统,google breakpad中minidump_stackwalk的编译
有关google breakpad相关Lib库的编译,网上信息较多。
可参考:https://blog.****.net/qq_19399235/article/details/69019064
但minidump_stackwalk和minidump_dump的编译很少,通过查看源代码,找到方法,共享之。
1 编译生成相关Lib
将gyp目录Copy到breakpad/src/tools, 并将该目录设为工作目录。
gyp.bat –-no-circular-check ../../client/windows/breakpad_client.gyp
注意用相对目录,会生成VS的sln文件。
编译时,注意修改运行库设置,与自己的程序一致:
2 编译minidump_stackwalk
(1)gyp.bat –-no-circular-check ../../processor/processor.gyp
(2)VS打开后,编译:“minidump_stackwalk”时,少getopt及optind(提示少:unistd.h),网上有相关的Windows代码(我用的是:https://www.jianshu.com/p/991e554d4861)
(3)少Common相关lib, LINK错误。把前面编译生成的common.lib加入即可。
(4)如果编译时,提示少”Object”,将警告设置改为No
3 应用minidump_stackwalk分析dmp文件,以app.exe程序名称为例
- 用dump_syms.exe 生成symbol文件(名称为:app.sym);命令:dump_syms app.pdb
- 将生成的dmp文件Copy到本目录(exe和pdb文件目录);
- 取sym文件的第一行:一般形式是:
MODULE windows x86_64 EB4B350D74B8461AA79E7D1F82A0A2C01
- 在当前目录下,新建目录: “symbols/app.pbd/”;
- 在目录“symbols/app.pbd/”下再新建目录:“EB4B350D74B8461AA79E7D1F82A0A2C01”
- 将app.sym Copy到上述目录中;
- 运行:minidump_stackwalk.exe -s aaa.dmp ./symbols > app.txt
几点说明:
- “app”要改为自己的程序名称;
- Sym文件一定要与程序名称相同;
- Symbols目录下“app.pbd”一定要包含“.pdb”字串