系列文章目录
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
找到对应的程序,查看其值,设定有效如下
设定无效如下