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

2023-11-07 09:52

本文主要是介绍通过GFlags工具来复现因为野指针、内存越界等造成的程序崩溃,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

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 OptionsAa.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.根据客户复现步骤运行程序


总结

这篇关于通过GFlags工具来复现因为野指针、内存越界等造成的程序崩溃的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/362849

相关文章

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件