在VS中debug时,将未初始化变量都赋值为CC的顿悟
来源:互联网 发布:java苹果内购认证接口 编辑:程序博客网 时间:2024/05/01 15:29
一直以来,我都不是太理解这种方式,在 C++函数调用原理理解中,我仅仅是简单的认为,那么做,可能是因为CC平时用的少,而且好看:)所以初始化这样一个不怎么常用的变量,可以让人很快发现。。。。事实上,的确有这样的效果,当Debug时,我看一个变量为CC时的确第一时间就能反应过来,我又犯了一个不可饶恕的低级错误,又忘了初始化了,这点在变量为指针类型的时候更加严重。
但是,在学习过反汇编这么久后,今天在看《C缺陷与陷阱》时,突然顿悟了CC的意义。。。。。至于为什么是看这本和这件事完全没有关系的时候突然想到,我也不知道,反正就是那样发生了。
CC在汇编代码中表示为int 3,实际表示一个中断,在与硬件中断(CPU中加入的DR寄存器指示)做区别的时候也叫软中断。。。。几乎所有的调试工具在调试时,都是靠int 3来完成任务的。。。。。。这些我知道时间不短了。。。。但是今天才将其与VS在debug时的初始化联系起来。。。。。这样的话,假如有异常的跳转,程序运行到了不应该运行的地方。。。。那么,就会触发中断,让调试程序获得控制,这样可以更早的发现问题,而不是当运行了一堆莫名其妙的代码后才出现问题。。。。。。
至于VS在debug时的初始化,可以用debug方式编译任何程序,你都能看到
比如在C++函数调用原理理解例子中如下:
0041136C lea edi,[ebp-0C0h] ;读入[ebp-0C0h]有效地址,即原esp-0C0h,正好是为该函数留出的临时存储区的最低位
00411372 mov ecx,30h ;ecx = 30h(48),30h*4 = 0C0h
00411377 mov eax,0CCCCCCCCh ;eax = 0CCCCCCCCh;
0041137C rep stos dword ptr es:[edi] ;重复在es:[edi]存入30个;0CCCCCCCCh? Debug模式下把Stack上的变量初始化为0xcc,检查未初始化的问题
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vagrxie/archive/2009/06/14/4267511.aspx
- 在VS中debug时,将未初始化变量都赋值为CC的顿悟
- 在VS中debug时,将未初始化变量都赋值为CC的顿悟
- C语言全局未初始化数据段分析前言:在分析C语言全局未初始化变量时,发现在目标文件中全局未初始化变量
- 成员变量未赋值时的默认值
- 是否有必要显式的在方法体内将局部变量赋值为null
- 为数组赋值时提示”未将对象引用设置到对象的实例“
- 未赋值的实例变量
- 下面的 SQL 命令中,可以将变量count值赋值为1的是
- java中变量未初始化
- 变量未初始化的可能性
- python中or关键字在变量赋值时的用法
- Java类中变量的初始化/赋值过程
- c++中局部变量未初始化引发的离奇惨案~~
- C++使用未初始化的指针和赋值为0的指针
- 关于struct 变量初始化和赋值的问题(vs 环境)
- Java中字符串定义,初始化,赋值为null的区别
- C语言中,定义局部变量时如果未初始化,则值是随机的,为什么?
- 怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat
- 分享IKAnalyzer 3.0 中文分词器
- 获取系统当前时间
- DataGridView数据读取
- shell通配符包括*?[]!
- 自学
- 在VS中debug时,将未初始化变量都赋值为CC的顿悟
- windows批处理命令教程
- The future of testing
- 【解决】快速启动栏消失了
- Linux网站
- flash插件安装不了
- 本人常用的VIM快捷键的记录,备忘,希望对大家有用
- 元数据的查询(查询表信息)
- FormShutdown.Designer.cs