堆溢出bug定位调试修复

最近代码出了bug,堆溢出。 debug下一切正常, release时随机崩溃到某几个地方,

报错是: Critical error detected c0000374

不是完全随机崩溃,崩溃到某几个正常的地方,开始怀疑是不是这几个地方真的有什么bug,

由于使用了qt库,炸到qt函数调用最后崩溃到系统dll中,根本无法调试,最后发现了一个神器

就是 WinDbg自带的工具软件 gflags, 通过这个软件可以修改注册表让程序运行时,系统runtime分配内存时额外再前后多分配两个字节,并且填充0xfd(貌似是这个),当程序内存发生溢出时写到

额外分配的内存时就直接终端。 gflags工具下载。这个再WindowsSDK中包含了,如果没有可以去

微软官网单独下载这个sdk安装时只安装调试工具,安装完成后的路径:

C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

打开里面的gflags.exe 切换到如下图选择 Image File, 注意exe只需要

文件名不需要完整路径。 下面Debugger可以不选,我选了之后有报错,

然后用vs正常启动release来调试就可以定位到,另外如果无法定位。可以

把下面的几个Enable xxx checking都勾选试试,不过这样程序运行会变很慢,

调试完记得在注册表中删除这些设置,否则程序一直运行很慢。

注册表路径是:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Image File Execution Options/mytest.exe

有时间研究下Windbg这个,有非常多的调试工具有助于定位bug。

也可参考这几篇博客:

Windbg的gflags.exe -- Attach调试利器_windbg gflag 挂 exe-CSDN博客

【VS】Windbg的gflags.exe调试堆栈溢出,访问越界等问题。_vs vld 越界访问-CSDN博客

相关推荐
kingx32 天前
Bugku 326 Baby-heap1 题解:glibc 2.23 堆溢出到 FSOP 劫持 _IO_list_all(附完整 exp)
pwn·ctf·glibc·堆溢出·fsop
拖累斯2 天前
Jenkins + Python 全自动跑通「禅道任务/BUG 导出 → 月度开发考核表」
python·jenkins·bug
寂寞的船2 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug
unity工具人3 天前
unity 照片墙插件(Pop-up Photo Wall)在触摸屏和红外框设备上的触发Bug
bug
灼行5 天前
Autosar SecOC 需求场景BUG(需求不一致性)【草稿】
bug
小豆庄7 天前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
sg_knight9 天前
Bug 定位实战:把报错丢给 Codex,它是怎么修的
chatgpt·llm·bug·openai·agent·ai编程·codex
8年车载测试10 天前
汽车五大域详解:动力、底盘、车身、座舱与智驾域
汽车·bug·jira·uds诊断·ecu刷写测试·canoe工具
ะัี潪ิื13 天前
Redisson Bug回顾
bug
猫咪很可爱14 天前
MySQL 5.7 备份恢复后函数与存储过程丢失:原因分析与正确备份姿势
数据库·mysql·bug·shell