VC6 Relase Debug 设置

合集下载

Visual_C++6.0调试功能图解教程

Visual_C++6.0调试功能图解教程

Visual C++ 6.0调试功能图解教程(1)2008年11月02 16:50来源: 网络阅读:50【大中小】Visual C++ 6.0调试功能这是我自己在学习时整理的,希望对大家有用.其中有几个部分的内容,如下:※My Note全部由我截图并参考资料进行说明,这其中有大量的内容是调试过程中体会总结才写的.有不当之处请大家更正.※From 《Visual C++ Debugger》这本书写得非常的不错,从里面截了一些有用的图,主要是强烈推荐大家阅读这本书.※Debug Menu From MSDN这是我从Visual C++ 6.0 MSDN Library October 2001中查来的,在My Note中有很多是从那里参考的.强烈推荐大家看这份英文说明.※From 《visual C++ 6.0开发工具与调试》这是我从网络上搜索到的,问题很经典,强烈推荐大家参看学习,避免不必要的错误.My Note○常用功能:Restart(Ctrl+shift+F5):此debugger功能将从程序的开始(第一有效行)处全速执行,而不是从当前所跟踪的位置开始调试,这时所有变量的当前值都将被丢弃,debugger会自动停在程序的main()开始处.这时如果选择Step Over(F10)就可以逐步执行main()函数了.1. Stop Debugging(Shift+F5):此debugger功能将终止(所有)调试,并返回到常规编辑状态.2. Break(此功能常常在遇到调用函数的语句时可见.):此功能将在调试过程中的debugger当前位置挂起程序的执行,然后就可以在调试状态一修改程序的代码,接着可以用Apply Code Changes(Alt+F10)来应用修改的代码到正在调试的程序当中.如果,当前(需要,待)可以(从DOS等窗口)输入值,挂起后将不能再输入.3. Apply Code Changes(Alt+F10):此功能可以在程序正在调试程序过程中应用(挂起)修改后的源代码.如,选择Break功能并修改代码后,只要选择Apply Code Changes(Alt+F10)就能将修改后的代码应用到正在调试的程序当中.4. Show Next Statement(Alt+Num*):此功能将显示程序代码的下一条语句,如果源代码中找不到,则在Disassembly窗口中显示语句.当在Disassembly窗口中显示时,可以单击Disassembly 返回到源代码窗口.5. Step Into(F11):此功能可以单步进入到在调试过程中所跟踪的调用函数的语句的函数内部.如,当前语句是"d.Display()", 选择Step Into(F11)后,Debugger将进入Display()函数内部并停在Display()函数内部的第一条语句上.(此时, 就可以Step Over(F10)对Display()函数进行单步调试了.)6. Step Over(F10):此功能可以单步对所在函数单步调试,如果调试的语句是一个调用函数的语句时, Debugger将全速执行所调用的函数,单步(一步)通过所调用的函数,Debugger停该调用语句的下一条语句上.7. Step Out(Shift+F11):此功能将使Debugger切换回全速执行到被调用函数结束,并停在该函数调用语句的下一条语句上.当确定所调用的函数没有问题时可以用这个功能全速执行被调用函数.8. Run to Cursor(Ctrl+F10):此功能将全速执行到包含插入点光标所在的行,可以作为在插入点光标处设置常规断点的一种选择.注意,当光标处不是一个有效的执行语句时此功能将不起作用.9. Go(F5):此功能将全速执行程序直到遇到一个断点或程序结束,或直到程序暂停等待用户输入.注意,此功能最能有效的调试循环,常将断点设置在循环体内,重复的按F5全速执行循环体可以测试循环过程中的产生的变化.10. S tep Into Specific Function:此功能可以可以单步通过程序中的指令,并进入指定的函数调用,此功能对于函数的嵌套层不限.调试常用快捷键From 《Visual C++ Debugger》Debug Menu From MSDNStart Debug Commands (Build menu)When you begin debugging, the Debug menu appears, replacing the Build menu o n the menu bar. You can then control program execution using the commands liste d in thefollowing table.Debug Menu Commands that Control Program ExecutionThe following additional commands appear on the Debug menu:From 《visual C++ 6.0开发工具与调试》1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。

vc6的使用流程

vc6的使用流程

VC6的使用流程1. 准备工作在开始使用VC6进行开发之前,需要准备以下工作:•安装VC6软件,确保已经正确安装。

•确保已经安装了适当的编译器和调试器。

•确保已经安装了所需的库文件和依赖项。

2. 创建项目VC6中创建项目的方法如下:1.打开VC6软件。

2.在菜单栏中选择“文件” -> “新建” -> “项目”。

3.在弹出的对话框中选择“Win32应用程序”或其他合适的模板。

4.输入项目的名称和保存路径。

5.点击“确定”按钮创建项目。

3. 设置项目属性在创建项目后,需要设置项目的属性以满足开发需求。

以下是设置项目属性的一般步骤:1.在VC6的“项目视图”中,选择项目文件。

2.在菜单栏中选择“项目” -> “设置”。

3.在弹出的对话框中,选择需要设置的属性,如“C/C++”、“链接器”等。

4.根据需求进行属性设置,例如指定包含目录、库文件路径等。

5.点击“确定”按钮保存设置。

4. 编写代码在VC6中,可以使用C或C++语言编写代码。

以下是编写代码的一般步骤:1.在“资源视图”中,选择需要编辑的源文件。

2.在代码编辑器中编写代码。

3.可以使用VC6提供的自动完成、语法高亮等功能来提升编码效率。

4.完成代码编写后,保存文件。

5. 编译和调试在代码编写完成后,可以进行编译和调试。

以下是编译和调试的一般步骤:1.在菜单栏中选择“生成” -> “全部重新生成”或“生成” -> “生成解决方案”。

2.编译器将会编译代码,并生成可执行文件。

3.在VC6中可以进行单步调试、断点设置等操作,以便于调试代码。

4.调试完成后,可以查看调试结果并进行必要的修正。

6. 运行和发布在完成编译和调试后,可以运行和发布项目。

以下是运行和发布的一般步骤:1.点击菜单栏中的“调试” -> “开始执行”或使用快捷键F5,运行程序。

2.程序将会在VC6中启动,并在控制台或窗口中显示运行结果。

3.如果需要发布项目,可以通过“生成”菜单中的“发布…”选项来进行发布设置。

vc6调试技巧

vc6调试技巧

vc6调试技巧难怪很多前辈说调试是⼀个程序员最基本的技能,其重要性甚⾄超过学习⼀门语⾔。

不会调试的程序员就意味着他即使会⼀门语⾔,却不能编制出任何好的软件。

我以前接触的程序⼤多是有⽐较成形的思路和⽅法,调试起来出的问题都⽐较⼩,最近这个是我⾃⼰慢慢摸索调试,接触了很多新的调试⽅法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下:VC调试篇设置为了调试⼀个程序,⾸先必须使程序中包含调试信息。

⼀般情况下,⼀个从AppWizard创建的⼯程中包含的Debug Configuration⾃动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。

为了增加调试信息,可以按照下述步骤进⾏:打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开)选择C/C++页,Category中选择general ,则出现⼀个Debug Info下拉列表框,可供选择的调试信息⽅式包括:选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执⾏⽂件和DLL如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。

选中这个选项,将使程序可以在上⼀次编译的基础上被编译(即增量编译),⽽不必每次都从头开始编译。

调试⽅法:1、使⽤ Assert(原则:尽量简单)assert只在debug下⽣效,release下不会被编译。

2、防御性的编程3、使⽤Trace4、⽤GetLastError来检测返回值,通过得到错误代码来分析错误原因5、把错误信息记录到⽂件中位置断点(Location Breakpoint)⼤家最常⽤的断点是普通的位置断点,在源程序的某⼀⾏按F9就设置了⼀个位置断点。

VC6.0调试方法

VC6.0调试方法

VC6.0调试⽅法
1.打开你要调试代码的⼯作空间。

2.按快捷键F5或点击以下图⽚上标记的图标进⼊调试模式。

3.打开调试⼯具条,⼀般情况下当你按F5键后会⾃动弹出,如果没有弹出的话,右击⼯具栏空⽩处,会弹出下图,选中调试,就会出现调试⼯具条。

4.接下来,在监视窗⼝中添加你要监视数据变化的变量。

5.按F11逐语句的调试代码,如果某⼀语句是⼀函数,你不希望进⼊该函数时,F10逐过程来查看,在代码的调试过程中,通过监视窗⼝查看变量值的变化,从⽽确定代码是否有问题。

6.如果希望跳出某⼀函数时,按快捷键Shift+F11,或者直接点击调试⼯具条上的按钮就可以跳出该函数了。

7.如果只是希望调试某⼀部分代码的话,可以设置断点来调试,调试⽅法如上,只是在要调试的代码之间⽤断点来分开。

设置断点时,光标放在你要设置断点的那⾏,按F9或点击编译微型条上⾯的类似⼿状的按钮即可。

Visual Studio中的debug和release版本的区别

Visual Studio中的debug和release版本的区别

Visual Studio中的debug和release版本的区别Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

Debug 和Release 的真正秘密,在于一组编译选项。

下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起Release 版错误,在此不讨论)Debug 版本参数含义/MDd /MLd或/MTd使用Debug runtime library (调试版本的运行时刻函数库)/Od 关闭优化开关/D "_DEBUG" 相当于#define _DEBUG,打开编译调试代码开关(主要针对assert函数) /ZI 创建Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译/GZ 可以帮助捕获内存错误/Gm打开最小化重链接开关,减少链接时间Release 版本参数含义/MD /ML 或/MT 使用发布版本的运行时刻函数库/O1 或/O2 优化开关,使程序最小或最快/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)/GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改实际上,Debug 和Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。

事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。

哪些情况下Release 版会出错有了上面的介绍,我们再来逐个对照这些选项看看Release 版错误是怎样产生的1、Runtime Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。

调试版本的Runtime Library 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。

VC++6.0 Release和Debug的不同

VC++6.0 Release和Debug的不同
在 其 编 译 条 件 下 无 法执 行 调 试 功 能 。 e u D b g和 R lae的 真 正秘 密 , ees 在 3 在 调 试 宏 时的 不 同 于一 组 编 译 选项 : D b g版本 eu 参 数 含 义 举 个 例 子 :请 在 V C下 输 人 A S R S E T然 后选 中按 F 2跳 到宏 定 义 1 的 地 方 . 这 里 你 就 能 够 发 现 D b g 中 A S R 要 执 行 eu SE T A x sr ald ie 而 R la e下 的 宏 定 义 却 为 ” d f e A S R m fAset i Ln . F e ee s # e n S E T i
/ d/ d 或 , T MD M【 l d使 用 D b grniel rr( 试 版本 的 运 行 (rdo” 所 以 注 意在 这 些 调 试 宏 的语 句 不 要 用 程序 相 关 变 量 如 i+ Ⅵ e u t bay调 u m i f j11。 、 0 + 写 时刻 函 数 库) 操作 的语句 。 E IY(是个例外。 V RF ) 顺便值得一提 的是 V R F 0宏 , E IY 这 / d关 闭 优 化 开 关 O 个 宏 允 许 你 将 程 序 代 码 放 在 布 尔 表 达 式 里 。 这 个 宏 通 常 用 来 检 查 / “ D B G”相 当 于 # e n DE UG打 开 编 译 调 试 代 码 开 关 D E U df e— B , i Wid w I的返 回值 。有些人可能为这个原因而滥用 V R F , no s AP E IY0 事
3 05 ) 0 2 0
【 摘 要 】 文 对 VC 编程 调 试 时 用 Rel 本 ae和 Deu s b g两 个版 本 的不 同之 处 做 了深 入 的 总 结 和 分析 。 【 键 词 】 Rel ; b g 编 译 关 VC; a eDeu ; s

Release和Debug的区别

Release和Debug的区别

Release和Debug的区别Debug与Release版本的区别Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项⾏动。

如果我们愿意,我们完全可以把Debug和Release的⾏为完全颠倒过来。

当然也可以提供其他的模式,例如⾃⼰定义⼀组编译选项,然后命名为MY_ABC等。

习惯上,我们仍然更愿意使⽤VC已经定义好的名称。

Debug版本包括调试信息,所以要⽐Release版本⼤很多(可能⼤数百K⾄数M)。

⾄于是否需要DLL⽀持,主要看你采⽤的编译选项。

如果是基于 ATL的,则Debug和Release版本对DLL的要求差不多。

如果采⽤的编译选项为使⽤MFC动态库,则需要MFC42D.DLL等库⽀持,⽽ Release版本需要MFC42.DLL⽀持。

Release不对源代码进⾏调试,不考虑MFC的诊断宏,使⽤的是 MFC Release库,编译时对应⽤程序的速度进⾏优化,⽽Debug则正好相反,它允许对源代码进⾏调试,可以定义和使⽤MFC的诊断宏,采⽤MFC Debug库,对速度没有优化。

既然Debug和 Release仅仅是编译选项的不同,那么为什么要区分Debug和Release版本呢?Debug和Release,在我看来主要是针对其⾯向的⽬标不同的⽽进⾏区分的。

Debug通常称为调试版本,通过⼀系列编译选项的配合,编译的结果通常包含调试信息,⽽且不做任何优化,以为开发⼈员提供强⼤的应⽤程序调试能⼒。

⽽Release通常称为发布版本,是为⽤户使⽤的,⼀般客户不允许在发布版本上进⾏调试。

所以不保存调试信息,同时,它往往进⾏了各种优化,以期达到代码最⼩和速度最优。

为⽤户的使⽤提供便利。

下⾯仅就默认的Debug和Release版本的选项进⾏⽐较,详细的编译选项可以看MSDN的说明。

我们将默认的Debug和Release的选项设置进⾏⽐较,过滤掉相同设置,主要的不同如下:编译选项:/Od /D "_DEBUG" /Gm /RTC1 /MDd /Fo"Debug““" /ZI链接选项:/OUT:"D:“MyProject“logging“Debug“OptionTest.dll" /INCREMENTALRelease设置:编译选项:/O2 /GL /D "NDEBUG" /FD /MD /Fo"Release““" /Zi链接选项:/OUT:"D:“MyProject“logging“Release“OptionTest.dll" /INCREMENTAL:NODebug 版本:/MDd /MLd 或 /MTd 使⽤ Debug runtime library(调试版本的运⾏时刻函数库)/Od 关闭优化开关/D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数)/ZI 创建 Edit and continue数据库,在调试过程中如果修改了源代码不需重新编译/GZ 可以帮助捕获内存错误/Gm 打开最⼩化重链接开关,减少链接时间Release 版本:/MD /ML 或 /MT 使⽤发布版本的运⾏时刻函数库/O1 或 /O2 优化开关,使程序最⼩或最快/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)/GF 合并重复的字符串,并将字符串常量放到只读内存,防⽌被修改MDd与MD⾸先,Debug版本使⽤调试版本的运⾏时库(/MDd选项),Relase版本则使⽤的是发布版本的运⾏时库(vcrt.dll)。

关于DEBUG和RELEASE的一些问题及解决方法

关于DEBUG和RELEASE的一些问题及解决方法

[release][版本][调试]release版本下调试正常运行exe出错 - VC/MFC / 基础类10月 9th, 2010 by adminPosted in VC/MFC | No Comments »我做的一个调用dll的程序,在debug下调试和运行exe都正常在release下调试也正常,但是直接运行release下的exe就会挂掉,请高人指点一下,到底是什么原因。

程序中有调用外部工具执行解压和压缩,因为没有使用多线程,在解压缩的时候会使主框架无响应,在这样的状态下进入调用dll的模块,然后程序执行一半就挂掉了,是不是和解压缩有关呢 ?不会是跟路径有关吧?程序中使用的相对路径???跟路径无关,都是相对路径而且release下调试是通过的,能正常运行得出结果但是,直接执行release下的exe文件就挂掉了,很奇怪运行就挂掉是指,没有响应?程序崩溃?程序直接消失?没有响应的话,是某个地方阻塞掉了,可以根据程序流程来跟踪,看执行到哪里才没响应的.程序崩溃的话,看看提示是什么,再跟踪程序流程.程序直接消失的话,多半是栈溢出了.挂掉的时候attach process一下,再查看堆栈,可以定位出在哪个函数挂掉了。

<<很可能就是路径的问题release调试的时候,可以设置工作目录,其他相对路径都是基于这个工作目录release运行的时候,工作目录应该是其所在的文件夹用几个messagebox调试的看看一定是路径问题!把dll放到release一份看看。

把dll放到release 目录下,再直接运行exe文件试试.- - 路径不正确吧。

一些指针变量未初始化??字节对齐方式不对??在PostMessage或者在SendMessage处查看,我也碰到这问题,就是这么解决的.80%是相对路径,改成绝对路径试试有没有考虑过权限的问题,调试的时候程序是有DEBUG权限的,直接运行是没有这么高的权限+看下库依赖问题 depends<顶一个!<Tags: , release, 版本, 调试[release][版本][VC/MFC]急!!~~release版本出现问题 - VC/MFC / 基础类09月 17th, 2010 by adminPosted in VC/MFC | No Comments »本人的聊天程序在debug的版本下可以顺利发送和接收对方聊天消息,但是在release版本下却出现了严重问题,症状如下:第一次发送消息,对方能正常接收并显示,当第二次发送消息对方接收到消息后,也能显示,但接着程序就出错,按“调试”按钮后就进入一个汇编代码文件,按F5往下运行就弹出“无效的句柄”对话框。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档