当前位置: 首页 > news >正文

求个网站你会感谢我的seo手机搜索快速排名

求个网站你会感谢我的,seo手机搜索快速排名,办公空间设计案例ppt,商贸公司网站建设方案一、dump和pdb是什么 在Windows系统下#xff0c;当我们写的程序跑在客户的机器上#xff0c;因为一个bug#xff0c;导致程序崩溃#xff0c;我们该如何定位并修复这个bug呢#xff1f; 有人会说记录日志#xff0c;即便有日志#xff0c;也是不好定位的#xff0c;因…一、dump和pdb是什么 在Windows系统下当我们写的程序跑在客户的机器上因为一个bug导致程序崩溃我们该如何定位并修复这个bug呢 有人会说记录日志即便有日志也是不好定位的因为你只能推测出大概的模块或者位置无法定位到具体出错的代码行。 此时我们可以让程序崩溃后自动生成一个*.dmp文件并配合在编译该程序时生成的pdb文件来准确定位到调用堆栈、代码行上。这样很轻易就可以找到该bug。 dump文件后缀*.dmp是程序崩溃时的内存转储文件 pdb文件后缀*.pdb是程序的符号文件。 二、Breakpad与qbreakpad简介 Breakpad是由Google开发的开源跨平台崩溃报告系统用于捕获程序崩溃时的内存状态并生成轻量级minidump文件.dmp。其核心功能包括崩溃拦截、堆栈记录和寄存器状态捕获适用于C应用的多平台部署Windows/Linux/macOS‌。 QBreakpad是Breakpad的‌Qt专用封装库‌它将Breakpad的复杂集成简化为Qt模块提供更便捷的API和跨平台兼容性专门服务于Qt应用程序的崩溃管理‌。 BreakPad工作原理示意图 表达的意思就是 我们在编译的时候需要在Release版程序中生成调试信息。 使用Breakpad提供的dump_syms工具或者cv2pdb工具从release版本程序导出符号文件。 当程序崩溃时breakpad会捕捉崩溃并生成dump文件。 dump文件可以直接发送到指定服务器或者由用户手动发给开发者。 收到dump文件后结合符号文件可通过minidump_stackwalk工具或Visual Studio工具生成堆栈调用信息文件这个文件可以直接阅读定位bug。 三、开发环境说明 本人使用的开发环境如下 操作系统Windows10 IDEQt Creator4.4.1 编译器mingw53_32 Qt库Qt5.9.3  四、源码准备 我们知道qBreakpad是对Breakpad的封装所以qBreakpad的编译还依赖2套源码Breakpad、LSS。 1下载Breakpad源码 下载地址https://github.com/google/breakpad 2下载LSS源码 下载地址https://github.com/ithaibo/linux-syscall-support 3下载qBreakpad源码 下载地址https://github.com/buzzySmile/qBreakpad 4下载cv2pdb工具 下载地址 注意这个工具最好下载最新版本的作者发布本文时最新版本是cv2pdb 0.53 五、编译qBreakpad 1将Breakpad、LSS源码放入third_party目录 解压qBreakpad源码后在qBreakpad-master\third_party目录下有如下2个目录如下 分别解压Breakpad、LSS源码至breakpad和lss目录此2个目录下源码需要参与qBreakpad的编译。放置好后如下所示 2qBreakpad工程介绍 在qBreakpad源码目录下使用QtCreator打开qBreakpad.pro工程如下 demo工程下有2个演示程序program和reporter分别实现了演示生成dump文件上报dump文件的功能。 handler为静态库工程该工程封装了Breakpad直接编译此工程可生成qBreakpad.lib。 tests为一个简单的测试工程。 3编译生成qBreakpad.lib 分别在Debug、Release模式下编译handler工程生成2个版本的qBreakpad.lib静态库。 因为程序调用qBreakpad.lib时只能debug版程序链接debug版库release版程序链接release版库。debug版程序链接release版库会报错。 4编译生成demo 在program.pro文件添加下图所示内容目的是编译release版程序时生成调试信息 ############ for qBreakpad ############ # qBreakpad中需要使用到network模块 QT network# 启用多线程、异常、RTTI、STL支持 CONFIG thread exceptions rtti stl# without c11 AppKit library compiler cant solve address for symbols CONFIG c11 macx: LIBS -framework AppKit# 启用调试信息关键 QMAKE_CXXFLAGS -g QMAKE_CXXFLAGS_RELEASE -g QMAKE_CFLAGS_RELEASE -g #release在最后link时默认有-s”参数表示Omit all symbol information from the output file因此要去掉该参数 QMAKE_LFLAGS_RELEASE -mthreads -Wl,# 配置头文件搜索路径和链接库路径 INCLUDEPATH $$PWD/qBreakpad/include CONFIG(debug, debug|release) { LIBS -L$$PWD/qBreakpad/lib/debug -lqBreakpad } else { LIBS -L$$PWD/qBreakpad/lib/release -lqBreakpad } ############ for qBreakpad ############ 在main函数添加以下内容启用崩溃时生成.dmp文件的功能 六、生成.pdb文件 将program这个demo程序编译出release版本 可见这个demo程序编译出来后体积是比较大的 然后将前面下载的cv2pdb工具解压放到目标程序同一个目录 在这个目录打开终端执行命令生成.pdb文件 cv2pdb.exe   目标程序.exe 执行成功后会在目标程序的同级目录下生成.pdb文件同时也可以看到目标程序的体积变小了 七、通过.dmp文件追踪程序崩溃的堆栈信息 运行前面生成的test.exe文件程序崩溃后会生成.dmp文件 使用Visual Studio打开.dmp文件这里以Visual Studio2022为例 点击上图中的“设置符号路径”将.pdb文件所在路径添加进去 击下图中的“使用仅限本机进行调试” 如下图所示可以看到程序崩溃时的堆栈调用情况 双击堆栈调用的行内容将源码文件路径设置一下便可查看源码及变量的实时值。 八、总结 在Windows系统下使用Mingw编译器编译出来的程序重点和难点是如何生成.pdb文件。而生成.pdb文件的重点有两方面一是在.pro文件添加-g编译参数二是使用cv2pdb工具的最新版本旧版本的cv2pdb工具可能无法生成.pdb文件这一点困扰了我好久。 如果应用程序调用了很多自己开发的动态库那么动态库的.pro文件也需要添加-g编译参数并且动态库也需要用cv2pdb工具生成.pdb文件。 最后为了方便提取多个文件的.pdb文件本人写了2个批处理脚本一个用于提取.exe文件另一个用于提取.dll文件我将脚本给出供大家参考 批量提取D:\package\bin目录下所有exe文件的pdb echo off echo Hello,I am processing pdb files...set OBJECT_HOMED:\packageset CV2PDB_HOME%~dp0 CHDIR /D %OBJECT_HOME%set COMPILE_BIN%OBJECT_HOME%\binecho step1: del *.pdb... del *.pdbecho step2: create *.pdb...set FILE_TYPE_EXE*.exe for /r %COMPILE_BIN% %%i in (%FILE_TYPE_EXE%)do ( if exist %%i %CV2PDB_HOME%/cv2pdb.exe %%i ) 批量提取D:\package\lib目录下所有dll文件的pdb echo off echo Hello,I am processing pdb files...set OBJECT_HOMED:\packageset CV2PDB_HOME%~dp0 CHDIR /D %OBJECT_HOME%set COMPILE_LIB%OBJECT_HOME%\libecho step1: del *.pdb... del *.pdbecho step2: create *.pdb...set FILE_TYPE_EXE*.dll for /r %COMPILE_LIB% %%i in (%FILE_TYPE_EXE%)do ( if exist %%i %CV2PDB_HOME%/cv2pdb.exe %%i )
http://www.zqtcl.cn/news/444192/

相关文章:

  • 公司做推广做网站好还是俄文网站引擎
  • 上海市建设咨询协会网站asp网站源码
  • 大家都在哪些网站上做医药招商wordpress po文件
  • 国外主题网站兰州app
  • 建设项目自主验收公示网站dedecms英文外贸网站企业模板下载
  • 做网站要服务器吗前端企业网站开发
  • 用html写一个个人介绍多网站怎么做seo
  • 做网站打广告犯法吗中国建设投资集团 网站首页
  • 怎么免费申请个人网站职业技能培训有哪些
  • 小型的企业网站湖南备案网站建设方案书
  • 现在做网站公司seo怎么做教程
  • asp化妆品网站windows优化大师有必要安装吗
  • 网站流量分析系统制作图片网站
  • 做网站技术路线广州番禺发布公众号
  • 企业网站自己可以做吗服装网站建设的利益分析
  • 网站做软件居众装饰集团有限公司
  • 南山网站制作联系电话芒果国际影城星沙店
  • 珠海网站设计费用建企业版网站多久
  • linux 网站搬家wordpress 卸载plugin
  • 江苏省建设厅网站 投诉编辑网站的软件手机
  • 深圳地图各区分布图seo网络优化师就业前景
  • 北京网站备案代理国家企业信用信息公示系统广东
  • 推销网站重庆网站优化公司哪家便宜
  • 外贸公司网站搭建礼品网站建设
  • 网站建设 今晟网络中国制造网官网登录
  • 东莞网站设计如何常州做网站设计
  • php网站数据库修改网站备案有必要吗
  • 电商会学着做网站呢WordPress又拍云cdn
  • 网站健设推广产品多少钱网站规划有什么意义
  • 诚信网站备案中心内江网站建设新闻