用debug tools for windows中的gflags配合VC2010调试程序堆错误(如越界访问)

转载请注明出处:https://blog.csdn.net/zzdmfk/article/details/84070611

下载winstepsdk(gflags包含在其中)的ISO镜像后,win10下需将文件从ISO拷贝出来再安装,切勿直接在ISO中运行安装程序。推荐命令行方式运行gflags, 记得一定要以管理员身份运行cmd.exe。

1.在命令行中输入以下命令指定默认调试器为vsjitdebugger.exe:

cdb -iae

2.输入以下命令绑定需要调试的可执行程序,如dlg.exe(不需要绝对路径 ):

gflags -p /enable dlg.exe

3.用VC编译一个Debug版本的堆错误程序dlg.exe:

//其中出错代码
char *p= new char[10];
for(int i= 0; i <= 11; ++i)
	p[i] = i;

4.VC调试运行dlg.exe, 发现并没有触发中断,修改出错代码为:

char *p= new char[10];
for(int i= 0; i <= 16; ++i)
    p[i] = i;

再次调试运行dlg.exe,我们看到了效果,代码中断在p[i] = i;这一句。为何上一段代码不会产生中断?那是因为VC Debug 模式下的new多分配了6个字节导致。

 

调试完后记得取消gflags对可执行程序的绑定,否则此程序将只能在VC里以Debug方式运行。

gflags -p /disable dlg.exe

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值