Visual Studio调试时,出现“触发一个断点”
2017-02-16 17:13
267 查看
问题描述:
Visual Studio编译代码顺利通过,调试代码时出现“已触发一个断点”,如下图:
源代码类似:
分析:
在F11单步调试
delete[] send_data;
这行时,发现内存释放出现异常,导致出现“以触发一个断点”。很有可能是缓冲区溢出。
知识点:
缓冲区溢出:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区
又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
栈溢出:栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这些空间为缓冲区。如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就会造成缓冲区以外的存储单元被改写,这种现象就称为缓冲区溢出。
栈溢出是缓冲区溢出的一种。
解决办法:
将缓冲区大小变大,扩大十倍;
#define FILE_BUFFER_LENGTH 30000
重新编译,成功;在delete[] send_data;行设置断点,单步调试,顺利释放内存。
Visual Studio编译代码顺利通过,调试代码时出现“已触发一个断点”,如下图:
源代码类似:
分析:
在F11单步调试
delete[] send_data;
这行时,发现内存释放出现异常,导致出现“以触发一个断点”。很有可能是缓冲区溢出。
知识点:
缓冲区溢出:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区
又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
栈溢出:栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这些空间为缓冲区。如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就会造成缓冲区以外的存储单元被改写,这种现象就称为缓冲区溢出。
栈溢出是缓冲区溢出的一种。
解决办法:
将缓冲区大小变大,扩大十倍;
#define FILE_BUFFER_LENGTH 30000
重新编译,成功;在delete[] send_data;行设置断点,单步调试,顺利释放内存。
相关文章推荐
- vs2008调试出现异常时触发断点位置和堆栈不正确的解决
- 关于解决在使用opencv时出现*.exe 已触发了一个断点的问题
- visual studio 2010 出现问题,不能设置断点调试了,一运行就未响应,然后程序退出
- VC2010 中出现“触发一个断点,其原因可能是堆被损坏” 的错误。
- visual studio无法单步调试,设置断点出现断点未能绑定
- vs2013 && win7 x64下出现的诡异错误:已在xxx.exe中触发一个断点
- 在对结构体分配的内存进行free时出现,关于 Windows 已在 **.exe 中触发一个断点。其原因可能是堆被损坏.
- visual studio 2010 出现问题,不能设置断点调试了,一运行就未响应,然后程序退出
- Visual Studio 2005 调试时出现“无法附加。绑定句柄无效”的解决办法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法(.net的一个BUG)
- 今天调试一个WebPart的简单程序出现的问题
- Visual Studio 2005/2008 调试出现“无法显示该网页”!
- visual studio 2005 ASP.net 断点调试方法
- Visual Studio 2005/2008 调试出现“无法显示该网页”!
- 即时调试(Just-in-timeDebugging) Visual Studio调试 断点中断程序的执行(断点指令)
- 【转】Visual Studio 2005/2008 调试Web项目时出现“无法显示该网页”
- 调试多线程更方便的两个特性(让断点只在特定线程触发、同时查看所有线程的堆栈信息)
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法。
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法