警惕VS(Visual Studio)的调试BUG漏洞

原创 2010年05月26日 22:14:00

痞子龙3D编程

http://blog.csdn.net/pizi0475

 

看下列不起眼的代码

void fun(int a)
{
 printf("fun para a = %d/n", a);// a = 12

 for (int i=0; i<1; ++i)
 {
  printf("fun para a = %d/n", a);// a = 12
  int a = 8;
  printf("{a} = %d/n", a);// a = 8
 }
}

 

 

int _tmain(int argc, _TCHAR* argv[])
{
 fun(12);
 return 0;
}

 

a的值调试显示为12 ,输出也为12 正确

 

a的值调试显示为-858993460 (当一个未初始化赋值的时候,他在内存就默认保存为-858993460),输出为12 ,是不是和我们预期不一样,a明明为12怎么会成未初始化了?看下边有个int a = 8;由于下边这个a还没有执行a = 8 ;所以会显示未初始化值。

 

看这时候变成了8这和我们预期的一样,而且输出也为8

 

看这时候箭头出了中括号,变成了12这和我们预期的一样,这也是正确的

 

 

 

 

从以上可以看出,只有第二副图调试显示的值是错误的,这是因为VS判断变量是根据{}作用域进行判断的。而实际上

{}里那个a作用域只在

这个范围内

因此,调试时应警惕这种情况,经测试在VS2003 ,VS2005, VS2008显示结果相同。应尽量避免定义重名变量,减少不必要的错误。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pizi0475/article/details/5626645

GitHub完美适配Visual Studio

-
  • 1970年01月01日 08:00

VS(Visual Studio)调试dll详细过程记录

在我们写的程序中有时候调用dll,并且需要跟踪dll中的函数,此时直接调试调用dll的工程是无法跳进dll的函数的,此时我们可以启动dll工程 来跟踪程序的走向。注意:要有dll的工程,也就是由其源代...
  • caoshangpa
  • caoshangpa
  • 2017-12-06 18:00:47
  • 252

VisualStudio 跨平台(Linux)调试

Visual GDB 跨平台调试简介Visual GDB是集成在VisualStudio上的一款跨平台C++调试插件,终于可以在Linux上用到宇宙第一IDE了。虽然在VS2015中可以安装跨平台的L...
  • luoru
  • luoru
  • 2017-04-23 12:42:19
  • 1024

在VisualStudio中快速启动调试Web应用程序

从2003到2005,Visual Studio在启动调试的功能上进行了一些改善,不过因为只是简单的一个F5键,很多人可能都不会注意。其实也已经不是很记得清楚在2003启动调试是什么样的问题,因为已经...
  • effun
  • effun
  • 2008-07-11 13:08:00
  • 1914

VisualStudio下的C++调试方法

VisualStudio下的C++调试方法 概述: 介绍如何利用VisualStudio的调试属性,各类断点设置,利用pdb与dump文件来定位崩溃问题。   •       调试属性设置      ...
  • u012896140
  • u012896140
  • 2015-03-15 14:10:51
  • 4450

VS Code 调试Node.js express网站(Visual Studio Code)

VS Code是微软出品的一款跨平台的轻量级的Editor,我就不宣传了,想了解的自己去搜吧,总之我很喜欢。 下载地址:https://code.visualstudio.com/ 安装完...
  • zhalcie2011
  • zhalcie2011
  • 2017-01-18 10:32:35
  • 1805

带你玩转Visual Studio——绑定进程调试

上一篇文章带你玩转Visual Studio——单元测试讲了VisualStudio中单元测试的用法。在VC++开发和调试中,有时无法设置断点进去调试(如我曾经遇到过的浏览器插件的开发,因为是浏览器调...
  • luoweifu
  • luoweifu
  • 2016-06-02 23:05:48
  • 4599

Visual Studio Code的运行和调试

微软新出了一个代码编辑器,叫做Visual Studio Code,VS Code只能编辑代码,没有调试等命令,使用惯了编译器,会发现VS Code有点儿无从下手。 VS Code打开如图所示: ...
  • u013719339
  • u013719339
  • 2016-06-30 10:15:50
  • 51277

Visual Studio配置(3):项目属性页-调试

调试:所有属性都是给调试的时候使用的,如果不是调试中,是不会起作用的。 --要启动的调试器:貌似可以选择远程的调试器 --命令:表示调试器要启动的exe文件的全名。默认值为$(Target...
  • u012175089
  • u012175089
  • 2017-02-14 16:15:15
  • 2396

Visual Studio 设置指定调试exe的启动路径

Visual Studio 设置指定调试exe的启动路径
  • fwb330198372
  • fwb330198372
  • 2016-10-13 16:23:47
  • 1582
收藏助手
不良信息举报
您举报文章:警惕VS(Visual Studio)的调试BUG漏洞
举报原因:
原因补充:

(最多只允许输入30个字)