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

Windows 同时被 2 个专栏收录
4 篇文章 0 订阅
2 篇文章 0 订阅

转载请注明出处: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

 

  • 1
    点赞
  • 3
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值