通过GFlags工具来复现因为野指针、内存越界等造成的程序崩溃

news2024/11/28 2:38:35

系列文章目录

C++程序异常调查专栏


文章目录

  • 系列文章目录
  • 前言
  • 一、GFlags是什么?
  • 二、如何获取GFlags
  • 三、使用步骤
    • 1.确认GFlags是否已经安装
    • 2.以管理员权限启动Command prompt
    • 3.GFlags有效设定
    • 4.检查GFlags有效设定是否成功
    • 5.根据客户复现步骤运行程序
  • 总结


前言

客户PC上如果发生程序崩溃,在没有dump、log等调查文件的时候,需要尝试按照客户的步骤去复现该程序崩溃。但往往能够顺利复现的概率很小。针对野指针、内存越界等造成的程序崩溃,利用GFlags工具能够显著的提高复现的几率。


一、GFlags是什么?

GFlags 是全局标志编辑器,用于启用和禁用高级调试、诊断和故障排除功能。驱动程序开发人员和测试人员通常使用 GFlags 直接或通过在测试脚本中包含 GFlags 命令来启用调试、日志记录和测试功能。页堆验证功能可帮助你识别 内核模式 驱动程序中的内存泄漏和缓冲区错误。

GFlags 具有对话框和命令行接口。 这两个接口提供大多数功能,但某些功能只能从其中一个接口访问。

二、如何获取GFlags

GFlags.exe 包含在WinDbg调试工具中。

WinDbg官网下载

安装WinDbg调试工具后,默认在以下目录中安装 64 位版本的 gflags.exe 。
C:\Program Files(x86)\Windows Kits\10\Debuggers\x64

如果运行的是 32 位版本的 Windows,请使用位于此处的 32 位版本的 gflags.exe :
C:\Program Files(x86)\Windows Kits\10\Debuggers\x86

三、使用步骤

1.确认GFlags是否已经安装

进入安装目录去确认

2.以管理员权限启动Command prompt

以管理员权限启动Command prompt启动后,移动到GFlags的安装目录)

C:\WINDOWS\system32>cd\
C:\>cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>

3.GFlags有效设定

输入以下命令设置程序的GFlags有效,如果要设置多个程序,依次输入以下命令即可。

gflags.exe /p /enable Aa.exe /full

命令运行后,会有如下提示告诉你设定成功

C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>gflags.exe /p
/enable Aa.exe /full Warning: pageheap.exe is running inside WOW64.
This scenario can be used to test x86 binaries (running inside WOW64)
but not native (IA64) binaries.

path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File
Execution Options
Aa.exe: page heap enabled

4.检查GFlags有效设定是否成功

输入以下命令查看已经设定GFlags有效的程序

 gflags.exe /p

命令运行后,查看设定成功的程序是否和设定的一致

C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>gflags.exe /p
Warning: pageheap.exe is running inside WOW64.
This scenario can be used to test x86 binaries (running inside WOW64)
but not native (IA64) binaries.

path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
    Aa.exe: page heap enabled with flags (full traces )
    Bb.exe: page heap enabled with flags (full traces )
    Cc.exe: page heap enabled with flags (full traces )

也可以直接到注册表去查看

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

注意64位操作系统,注册表地址如下

SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

找到对应的程序,查看其值,设定有效如下
设定有效状态
设定无效如下
设定无效状态

5.根据客户复现步骤运行程序


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1177174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MQTT协议基础学习

MQTT是什么 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。 MQTT基本原理 MQTT服务端 MQTT服务端通常是一台服务器,可对MQTT信息的接收、储存、处理和发送。负责将MQTT客户端发送来的信息传递给其他MQTT客户端(需要客户端订阅&#xff…

骨传导蓝牙耳机哪款好?这五款高品质骨传导耳机不可错过!

随着耳机的使用频率增加,骨传导耳机也走进了越来越多人的视野里,而传统的入耳式耳机,常常以使用场景少、佩戴会疼痛、容易引发耳部疾病等原因逐渐被骨传导耳机所替代,所以现在有越来越多的人去选择骨传导耳机,但要注意…

【Leetcode】349. 两个数组的交集

题意 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决…

供应链云仓系统:实现采购、销售、收银、路线规划一体化,高效协同,再创商业价值!

供应链云仓系统是一款集合采购、销售、收银、路线规划等多项功能的软件系统,旨在帮助企业实现业务流程的全面自动化和协同化。通过该系统,企业可以轻松管理供应链的各个环节,提高运营效率,降低成本,实现商业价值的最大…

标讯通:无代码开发连接API,为广告推广与客服系统集成新商机

无代码开发连接API的新趋势——标讯通 招投标已成为大多数企业获取业务的主要途径之一。然而,由于招标信息平台分散,平台发布的招标信息更是有数十万条,单纯依赖人工查询,往往过程繁琐,效率低下。在这样的背景下&…

java智能在线考试系统源码 基于SpringBoot+Vue开发

java智能在线考试系统源码 基于SpringBootVue开发 环境介绍 语言环境:Java: jdk1.8 数据库:Mysql: mysql5.7 应用服务器:Tomcat: tomcat8.5.31 开发工具:IDEA或eclipse 开发技术:SpringbootVue 项目简介&…

再也不愁了!有了它在家也能轻松制作个人作品

​在家就能轻松制作个人作品,这不仅节省了时间和精力,还降低了成本。无论你是想要制作一个短片、设计一款App、还是写一篇文章,这个网站都能提供专业的支持和帮助。 1.在浏览器搜索FLBOOK在线制作电子杂志平台,点击登录与注册 2.点…

CV计算机视觉每日开源代码Paper with code速览-2023.11.2

精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Re-Scoring Using Image-Language Similarit…

ubuntu20.04 安装cudnn

中文地址是.cn:cuDNN 历史版本 | NVIDIA 开发者 英文地址是.com:cuDNN 历史版本 | NVIDIA 开发者 1、下载cudnn:cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb 解压并安装:sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8…

配件管理系统软件哪家好?如何优化企业设备管理,提高运营效率?

随着企业运营的日益复杂化,设备的维修维护与管理已成为企业生产运营中的重要环节。在这个过程中,配件的管理往往成为一项极具挑战性的任务。如何有效地管理备用的配件,缩短维修的时间,同时防止库存积压,是许多企业目前…

有什么好用的CRM客户管理系统?推荐这5大高口碑的CRM系统!

有什么好用的CRM客户管理系统?推荐这5大高口碑的CRM系统! 好用的CRM客户管理系统: ①需要进行精细化管理 ②需要专业的管理工具 ③最好能够做到和erp系统和oa系统的集成 授人以鱼不如授人以渔,在给题主推荐crm系统之前&#…

Java前后端分离的在线考试系统源码

Java前后端分离的在线考试系统源码 技术栈 1,SpringBoot 2,Mybatis-plus 3,MySQL 5.7 4,Vue全家桶 5,ElementUI 6,Redis 7,Swagger 8,阿里云OSS 9,Log4j 考…

Linux网络编程04

更高效的零拷贝 发送方过程零拷贝 sendfile 发送文件方的零拷贝,虽然之前我们就可以使用mmap来实现零拷贝但是存在一个方法sendfile也可以直接实现数据从内核区发送到网络发送区socket 直接把内核里面你的文件数据不经过用户态,直接发送给另外一个文件…

成集云 | 电商平台、ERP、WMS集成 | 解决方案

电商平台ERPWMS 方案介绍 电商平台即是一个为企业或个人提供网上交易洽谈的平台。企业电子商务平台是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合信息流、货物流、资金流有序、关联、高效流动的重要场所。企业、商家…

多功能声学综合馆:空间的“膜法师”

建筑是文明的承载者,是历史的见证者,也是城市的象征。但在现代都市中,我们不仅需要“固定”的建筑,更需要灵活与多功能性的空间。而这,正是多功能声学综合馆为我们带来的“膜法”。 不仅仅是建筑,更是艺术的…

盘点13种即插即用的涨点模块,含注意力机制、卷积变体、Transformer变体

朋友们,你们想发paper的时候有没有被创新点、改模型、改代码折磨过?今天我教你们一个前期又快又省事的方法,就是用即插即用的模块“缝合”,加入自己的想法快速搭积木炼丹。 这种方法可以简化模型设计,减少冗余工作&am…

AI技术再刷屏!明星集体“说”外语,有何风险?

近日,一段美国歌手泰勒斯威夫特“说”中文的短视频在网络刷屏,引发热议。 视频中,泰勒斯威夫特“说”着流利中文,音色和讲母语时的音色类似,甚至连口型都能对上。 类似的视频还有很多外国人“说”地道中文、很多中国…

智慧班牌系统全套解决方案 智慧校园云平台

随着智能的不断发展,学校也有了更多智能化的应用,传统教育信息化水平低、校园和班级文化建设、日常教学管理缺少有力的数字抓手,家校通缺乏渠道,无法及时掌握孩子在校情况,学校教育和家庭教育出现断层,存在…

如何本地搭建SeaFile私有云盘并实现远程连接

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

剑指JUC原理-13.线程池

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…