在VS中debug时,将未初始化变量都赋值为CC的顿悟
来源:互联网 发布:怎么在淘宝开店铺步骤 编辑:程序博客网 时间:2024/05/07 09:20
在VS中debug时,将未初始化变量都赋值为CC的顿悟
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
一直以来,我都不是太理解这种方式,在 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,检查未初始化的问题
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
- 在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
- 反汇编时的函数识别及各函数调用约定的汇编代码分析
- C++中的成员函数调用原理及this指针的传递方式
- sprintf函数
- C++中通过指针,引用方式做返回值的汇编代码分析
- 今日读网精华链接@20090614
- 在VS中debug时,将未初始化变量都赋值为CC的顿悟
- Oracle BPM学习笔记1
- 《数据结构与算法分析C++描述》 分离链接(separate chaining)哈希表的C++实现
- 《数据结构与算法分析C++描述》 搜索二叉树的C++实现
- TCP/IP协议(上)
- JSch -- Java Secure Channel
- 从最简单的Win32汇编程序,HelloWorld说起
- 通过纯静态分析来还原算法,获取《加密与解密》第2章的TraceMe的注册机
- 关于MyEclipse 在编辑JSP文件时,光标乱跳.