windows系统,google breakpad中minidump_stackwalk的编译

有关google breakpad相关Lib库的编译,网上信息较多。

可参考:https://blog.csdn.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文件。

编译时,注意修改运行库设置,与自己的程序一致:

windows系统,google breakpad中minidump_stackwalk的编译_第1张图片

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

windows系统,google breakpad中minidump_stackwalk的编译_第2张图片

3 应用minidump_stackwalk分析dmp文件,以app.exe程序名称为例

  1. 用dump_syms.exe 生成symbol文件(名称为:app.sym);命令:dump_syms app.pdb
  2. 将生成的dmp文件Copy到本目录(exe和pdb文件目录);
  3. 取sym文件的第一行:一般形式是:

MODULE windows x86_64 EB4B350D74B8461AA79E7D1F82A0A2C01 

  1. 在当前目录下,新建目录: “symbols/app.pbd/;
  2. 在目录symbols/app.pbd/下再新建目录:“EB4B350D74B8461AA79E7D1F82A0A2C01
  3. 将app.sym Copy到上述目录中;
  4. 运行:minidump_stackwalk.exe -s aaa.dmp ./symbols > app.txt

几点说明:

  1. “app”要改为自己的程序名称;
  2. Sym文件一定要与程序名称相同;
  3. Symbols目录下“app.pbd”一定要包含“.pdb”字串

你可能感兴趣的:(C++)