VC++6.0-在Release下实现单步调试_VC技术文章_VC_软件编程

 我在一些编程论坛上,经常看到有人问我的程序在Debug下是好的,可是到Release就挂掉了,或者在Release下是好的,但是在Debug下挂 掉了之类的问题,其实这种问题最好解决,因为只要一单步跟踪,查看它的调用堆栈,和函数调用顺序,错误就一览无余了。通常错误要么是对空指针进行操作,要 么是释放的那块内存已经不是当初申请的不一样大了,要么一次申请的内存调用了多次delete等等……

所以会编程序的人,首先要掌握的一门技术就是调试。可以说不会调试就等于不会编程。 VC++6.0自带了非常好的调试工具,使用起来非常方便,点F5就可以开始,单步是F10,单步进入是F11,等等。。关于调试的技术我就不多说了,这 里面的东西比较多,有好几个Debug相关的窗口,Watch ,Variables,Call Stack都非常有用。

但是,大家都知道在Release模式是不可以单步调试(其实也不是不能调试,而是跟踪不到源码)和设置断点的,因为这种方式编译的程序是不带调试符号的,所以到出错的地方,我们只能得到汇编码,而不能确认是那句源码出现的错误。

我们要怎么样才能在Release模式下能单步和断点呢? 很简单,照下面的步骤设置一下就可以了:

1.第一步:打开菜单 Project-> Setting...,选择所要设置的工程,并选择"Win32 Release":

2.第二步:选择C/C++ Tab,然后在Debug Info:列表里选择“Program Database”

3.第三步:选择Link Tab,然后钩选"Generate debug info"

时间: 2024-09-24 04:32:35

VC++6.0-在Release下实现单步调试_VC技术文章_VC_软件编程的相关文章

VC入门的一条路--史列因_VC技术文章_VC_软件编程

史列因(iamsor@sohu.com) 首先声明,我可不是什么高手,也就是刚脱贫.因为运气很好,买到了几本好书,在学习过程中几乎没走什么弯路,没费什么劲就入门了,现在一般的小程序能搞定了.看到那些因为不知从何下手而苦苦挣扎的朋友,希望我的文章能给他们一些帮助. 学编程急不得,上来就学VC肯定碰一头灰,说VC难就难在这点上了.如果硬上,意志坚强的话也许能挺过来,但也是会缺乏后劲,不得不回过头来补习基础知识.意志不坚强的话,很有可能就此放弃了,并留下一个VC难得不得了的印象.其实,只要踏踏实实一步

学VC还是从SDK开始的好_VC技术文章_VC_软件编程

  学过一段时间的VC了,SDK也精略地看过,后来转向学习MFC,也看过候俊杰的〈深入浅出MFC〉也研究过李久进(http://www.vczx.com/tutorial/mfc/mfc.php)的MFC学习.进展不大.反过来还是先学透SDK的好

VC.NET 中编译时的警告_VC技术文章_VC_软件编程

LINK   :   warning   LNK4089:   /OPT:REF   已丢弃所有对"OLEAUT32.dll"的引用   LINK   :   warning   LNK4089:   /OPT:REF   已丢弃所有对"USER32.dll"的引用   原因:The   linker   discarded   all   packaged   functions   that   referenced   exports   in   dynam

VC++6.0实验环境下,请问数据库程序怎么在界面显示?

问题描述 VC++6.0实验环境下,请问数据库程序怎么在界面显示? VC++6.0实验环境下,有没有简单的,包含用户登录的数据库界面编程的案例?请问数据库程序怎么在界面显示? 解决方案 http://download.csdn.net/download/chengxuaihzh/2931146 解决方案二: [C++]实验一:使用VC++6.0环境编写C++程序

请问这个程序怎么放在vc++6.0实验环境下,和我的程序连接起来

问题描述 请问这个程序怎么放在vc++6.0实验环境下,和我的程序连接起来 CRectDrawRect(0,0,nWidth,nHeight),rect,tempRect,tempRect1; DrawRect.InflateRect(-100,-nHeight/8,-100,-50); pDC->Rectangle(&DrawRect); tempRect1=tempRect; font.CreateFont(-MulDiv(25,-pDC->GetDeviceCaps(LOGPIX

DES算法及其在VC++6.0下的实现(上)

摘要: 本文介绍了一种国际上通用的加密算法-DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码.最后给出一个示例,以供参考. 关键字:DES算法.明文.密文.密钥.VC: 本文程序运行效果图如下: 正文: 当今社会是信息化的社会.为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1997年公布了一个由IBM公司研制的一种加密算法,并且确定为非机要部门使用的数据加密标准,简称DES(Data Encrypton Standard).自公布之日起,DES算法作为

环境-vc++6.0内关于s=(i++)*(i++)的问题

问题描述 vc++6.0内关于s=(i++)*(i++)的问题 int i = 0: s = (i++)*(i++) printf("%d",s): 这个结果应该是多少?我个人分析应该是2,第一个i++使用的是1 然后i的值应该变成2然后第二个i使用的是2 然后i变成3 结果s的值应该是2 但是在vc++6.0的环境下运行结果为什么是1呢?新手求解. 解决方案 这个问题问了无数遍,我想这么告诉你. 就C++语言来说,这个是语言未定义行为,所谓语言未定义行为,就是在语言规范中没有规定遇到

用VC 6.0实现串行通信的三种方法

摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控. ---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.依据不同的条件实现对串口的灵活编程控制是我们所需要的. ---- 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制

VC++ 6.0 单步调试【写给自己看的调试总结帖】

写给自己看的调试总结帖 参考一: 先将光标移动到你需要停止的地方,点击一下工具栏中的小手工具,这个时候左边会有一个红色的圆点出现,然后点击"go F5"工具.程序会开始运行,直到运行到你设置的断点处停下来,这个时候你可以在下边的出口中检查你的变量的值 了.如果下面没有你需要的变量,你可以将变量名拖到变量窗口中. 如果你的变量窗口没有显示,你可以通过菜单-->查看-->调试窗口--->watch 打开它. 参考二: 逐过程调试-F10 逐语句调试-F11 跳到光标处-C