WaterMoon

  • technology
  • essay
  • English
    • 简体中文
  1. Home
  2. technology
  3. This article

使用qBreakpad跟踪程序异常退出

qBreakpad 介绍

qBreakpad is Qt library to use google-breakpad crash reporting facilities (and using it conviniently). Supports

Windows (but crash dump decoding will not work with MinGW compiler)

Linux

MacOS X

qBreakpad 如何使用:

  1. 下载代码
   git clone --recursive https://github.com/buzzySmile/qBreakpad.git
   cd qBreakpad/third_party
   git clone https://github.com/google/breakpad
   git clone https://github.com/ithaibo/linux-syscal-support
   rm lss
   mv linux-syscal-support lss
  1. 静态编译qBreakpad 用qtcreator打开qBreakpad目录的qBreakpad.pro文件,根据需求编译debug版本或者release版本,一般都是需要debug版本。编译完成后,检查以下文件是否存:
   qBreakpad\third_party\breakpad\src\tools\windows\binaries\dump_syms.exe
   qBreakpad\hanlder\qBreakpad.lib
  1. 把qBreadpad集成到本地工程 修改本地工程的pro文件,如下(根据实际情况修改)
   include($$PWD/qBreakpad/qBreakpad.pri)
   QMAKE_LIBDIR += $$PWD/qBreakpad/handler
   LIBS += -lqBreakpad

修改本地工程的main.cpp,也可以在别处。

   #include <QBreakpadHandler.h>
   ....
   int main(int argc, char *argv[])
   {
   ....
   QBreakpadInstance.setDumpPath(QLatin1String("crashes"));
   ....
   }

如何分析dmp文件:

  1. 生成symbols
   ./dump_syms.exe ./testApp.exe > testApp.sym

该命令可能出错

   CoCreateInstance CLSID_DiaSource {E6756135-1E65-4D17-8576-610761398C3C} failed (msdia*.dll unregistered?) 

此为系统未注册 msdia*.dll 文件。从 Visual Studio 的安装目录中可以搜索到,在目录 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ 下存在 msdia120.dll 和 msdia140.dll 文件。注册一下 msdia140.dll 即可。

按下windows键,输入cmd,鼠标右键点击 命令提示符 以管理员方式运行,然后执行如下命令注册 msdia140.dll:

   regsvr32 "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\msdia140.dll"
  1. 创建对应的目录 看到dump文件信息
   head -n1 testapp.sym

输出

   MODULE windows x86_64 EC770504227A41069022FB27B31345474 testApp.pdb

创建目录并移动文件

   mkdir -p ./symbols/testApp.pdb/EC770504227A41069022FB27B31345474
   mv testapp.sym ./symbols/testApp.pdb/EC770504227A41069022FB27B31345474

注意如果动态库也需要调试,那么按照此步骤创建库的sym并放到对应的目录。

  1. 查看dmp文件
   ./minidump_stackwalk.exe xxx.dmp ./symbols >> 1.txt

minidump_stackwalk.exe可以从安卓开发工具获取到。

Tags: Breakpad debug
2021-11-05 1328Browse 1Like 0Comments

勇往直前

The man who focus on technology edited

Reward Like
< Previous
Next >

Comments

Cancel reply
Newest Hotspots
Newest Hotspots
windows office激活 vlmcsd搭建 使用qBreakpad跟踪程序异常退出 FFT一种C代码实现 Tiff图像直方图均衡化以及规定化算法 Linux问题 Debian: cannot find -lGL

COPYRIGHT © 2021 WaterMoon. ALL RIGHTS RESERVED.