vc++6.0调试方法(附有快捷键)

合集下载

vc++6.0调试方法(附有快捷键)

vc++6.0调试方法(附有快捷键)

调试程序可以帮助了解程序是怎样运行的。

1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release状态。

“C/C++”标签页中的Category选General,Optimizations选Disable(Debug),Debug info选Program Database。

在“Link”标签页中选中Generate debug info复选框。

注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。

3、Release和Debug有什么不同。

Release版称为发行版,Debug版称为调试版。

Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。

Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。

Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),比如MFC42.DLL。

这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。

而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42D.DLL。

在没有安装Visual C++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择use static dll when link。

4、ASSERT和VERIFY有什么区别ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然编译,但不再判断真假。

所以后者更安全一点。

vc++6.0环境下程序调试教程

vc++6.0环境下程序调试教程

更多共享就在:/avbbtv/home,个人整理,没有版权,欢迎共享---avbbtv如何在Visual C++ 6.0 环境下进行简单的C语言程序调试桂林电子科技大学波仔*****************文章简介本文主要介绍如何在VC6.0 环境下进行简单的C 语言程序调试。

作为阅读本文的基础,读者应该熟悉如何在VC6.0 环境下建立Win32 Console Application(Win32控制台程序) 类型的工程。

请结合文章给出的案例,按照文档中的描述一步一步做。

如果只是阅读,则收效甚微。

在做完文章给出的案例后,你应该尝试着将文章中介绍的知识和技巧应用到你实际开发的程序中。

如果阅读完一遍后,对调试基本概念还是不了解,建议你再多看几遍。

在介绍如何进行C 语言程序调试( debugging)前,首先介绍程序调试的概念。

调试(debug)一词在计算机领域最早被提及,源于美国人Admiral Grace Hopper(葛丽丝·霍普、COBOL 语言发明者、电脑科学家) 。

二十世纪四十年代(1940s) Grace Hopper在哈佛大学为名为马克2 号(Mark II) 的计算机( 由IBM 公司制造) 编写程序时,有一次在排除计算机故障时,发现一只飞蛾被夹在触点原件之间,导致计算机无法运行。

于是她诙谐的把计算机故障称之为“臭虫(bug)”,把排除程序故障称之为debug 。

从此之后,在计算机领域,程序调试或查找程序故障称为debug 。

进行程序开发时,很多情况是程序通过编译、链接( 亦即不存在语法错误) ,但是在运行时往往得不到正确的结果( 需要多组输出数据进行测试)。

这时往往意味着程序存在逻辑错误( 与语法错误对应,通常是指程序所体现出的逻辑不符合开发者要求,或者是开发者本身对程序所要解决的某一问题的理解存在逻辑偏差) ,而查找逻辑错误的过程可称之为程序调试。

程序案例下面以一个程序案例为例,介绍如何在VC6.0 下进行程序调试。

VC6.0的最全快捷键和若干实用小技巧

VC6.0的最全快捷键和若干实用小技巧

C++开发中常见问题
1,简述VC6下如何进行程序的调试。
在主菜单"Build"中,有一个Start Build的子菜单,它下面包含了Go菜单(快捷键为F5),选择后,程序将从当前语句进入调试运行,直到遇到断点或程序结束。
将鼠标移动到要调试的代码行,单击鼠标右键选择“Insert/Remove Breakpoint”,或者按下F9,可以在该行上添加断点,此时断点代码行前面出现一个棕色的圈,再次选择将清除断点。进入调试状态后,Debug菜单将取代Build菜单出现在菜单栏中,它下面包含常用的调试操作,如Step Over,单步运行并不跟踪到调用的函数内部;其他还包括Step Into,Step Out, Stop Debugging等调试方法。
调用GlobalFree函数来释放内存块。您必须传给该函数一个内存句柄。
在WIN32中您也可以用“Local”替代内存分配API函数带有“Global”字样的函数中的“Global”,也即用LocalAlloc、LocalLock等。
在调用函数GlobalAlloc时使用GMEM_FIXED标志位可以更进一步简化操作。使用了该标志后,Global/LocalAlloc返回的是指向已分配内存的指针而不是句柄,这样也就不用调用Global/LocalLock来锁定内存了,释放内存时只要直接调用Global/LocalFree就可以了。
猜测:一定是内存不够啦,遂在某处调用函数得到当前剩余的物理内存数量并使用MessageBox显示。报告曰:自由物理内存还有100多M。鼠标按下OK键,程序居然不死了。恩???
删除MessageBox()函数—死!加上MessageBox()函数—不死!再删除–死,再加上–不死。晕倒!

VC6.0调试方法

VC6.0调试方法

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

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

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

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

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

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

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

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

真正实用的 VC++ 6.0 快捷键大全

真正实用的 VC++ 6.0 快捷键大全
8.如何添加系统中的头文件(.h)到当前项目.
#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.
9.如何在Studio使用汇编调试
在WorkBench的Debugger状态下按CTRL+F7.
Alt+F2 :编辑书签
Ctrl+F2 :添加/删除一个书签
F12 :Goto definition
Shift+F12 :Goto reference
Ctrl+'Num+' :Displays the next symbol definition or reference
Ctrl+'Num-' :Displays the previous symbol definition or reference
Ctrl+V/Shift+Ins:Paste
Ctrl+U :将选定区域转换成小写
Ctrl+Shift+U :将选定区域转换成大写
Ctrl+F8 :当前行变成选定区域的头/尾(再移动上下光标或者点鼠标就会选定多行)
Ctrl+Shift+L :删除从当前位置到行尾
Ctrl+Shift+8 :将所有Tab变成`或者还原
12.如果让控制台应用程序支持mfc类库
可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,在use run-time library 下拉框中选择debug multithread。

vc6.0安装教程与调试技巧

vc6.0安装教程与调试技巧

vc6.0安装教程与调试技巧vc6.0的安装过程1.首先解压安装文件的压缩包2.然后再选择安装的版本,VC6CN 表示的是中文版,VC6EN表示英文版。

3.打开VC6CN文件夹,其中有如下图标,鼠标双击。

4.如下图所示就是我们安装的第一步,单击下一步。

5.选择“接受协议”后单击下一步。

6.本软件属于破解版,故无需输入产品ID号码,直接单击下一步。

7.选择“安装visual c++6.0中文企业版(I)”,这就是我们要安装的程序,单击下一步。

8.单击下一步。

9.如下界面,单击“继续”,开始安装软件。

10.点击“确定”。

11.选择“是”,继续安装。

12.选择“typical”继续安装13.选择“ok”。

14.选择“确定”15.选择“确定”16.取消“安装MSDN”前面的勾号,选择“退出”。

17.选择“是”,取消MSDN的安装。

18.程序安装完毕,再电脑的“开始菜单”中,选择“所有程序”,在“Microsoft Visual C++ 6.0”目录中选择“Microsoft Visual C++6.0”就可以运行程序了。

也可以将这个图标发送到桌面快捷方式,这样就可以直接在桌面上运行程序。

调试技巧调试程序可以帮助的了解程序是怎样运行的。

1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release 状态。

“C/C++”标签页中的Category选General,Optimizations 选Disable(Debug),Debug info选Program Database。

在“Link”标签页中选中Generate debug info复选框。

注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。

VC6.0使用说明(新建工程、调试)

VC6.0使用说明(新建工程、调试)
VC6.0编程步骤
1. 启动VC6.0,出现如下界面
第一步:File
VC6.0编程步骤
2. 选择菜单“文件(File)” “新建(New…)”,出现如下 窗口 选择”Projects”
填写工程名称 选择工程保存位置 强烈建议工程保 存在自己单独的 一个文件夹里, 一道题一个文件 夹 选中这些选项 通常是已经选好的 以上信息都正确后,最后按 下此按钮,进入下一步
• F9 • Shift+F5
设置/取消 断点 结束程序调试,返回程。将光 标移至断点设置处, 按F9设置或取消断点。 在调试过程中,黄色箭 头指向的代码行是还没 有执行的代码行。在本 题中,swap1函数已经 执行完了,而swap2还 没有开始执行。
2,按F5运行至 设置断点处。
当一切都正确后,按下此 按钮,进入下一步
VC6.0编程步骤
6. 当上一步按下“确定”按钮后,将出现如下 所示界面 编译并运行程序
快捷键:Ctrl+F5
编译
链接 快捷键:F7
注意该白色窗体,可用 于输入代码,见下一步
VC6.0编程步骤
7. 输入程序代码
按F7进行编 译链接,进 入下一步
请在选中多行代码 的情况下,测试这 三个按钮的功能。
程序代码
VC6.0编程步骤
8. 代码编译链接
本例中,我们故意在printf函数后面 遗漏分号,以及省略return语句。于 是在按F7进行编译后,出现如下错 误提示及警告(warning)。
如果错误较多, 可以点击这里 上下滑动查看 信息。
VC6.0编程步骤
8. 代码编译链接
2
通过单击错误信息, 在编辑框内将出现一 个箭头,标明该错误 信息可能出现的位置。

VC++6.0中如何编译运行及调试C语言程序

VC++6.0中如何编译运行及调试C语言程序

VC++6.0中如何编译运行调试C语言程序1.启动VC++6.0 (如下图)2.单个源文件的编译运行例如下面的源代码#include<stdio.h>void main(){ int i,sum=0;for(i=1;i<=10;i++){sum=sum+i;}printf("sum=%d\n",sum);}打开VC++6.0,如图1所示(图1)选择“文件”→“新建”,打开如图2所示(图2)选择“文件”项,如图3所示(图3)选择“C++ Source File”项,并在“文件名”项目下输入“sum.c”如图4所示(图4)单击“确定”,打开如图5所示(图5)输入如上源代码,如图6所示(图6)选择按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接)。

(图7)在下端的输出窗口会有错误和警告的提示,如果没有错误选择“执行”(或按Ctrl+F5组合键)即可出现运行结果,如图8所示(图8)3.多个源文件的编译运行以上是运行单个源文件的情况,但是在程序设计时,往往是由几个人各自独立编写不同的程序,显然这些程序是不能写在一起进行编译的,这时就需要建立项目工作区来完成几个独立程序的编译,具体方法如下。

首先建立两个文本文件,分别命名为“file1.c”和“file.c”,分别在两个文件中输入如下两个源代码,然后保存。

源代码1:#include<stdio.h>void main(){void sum();sum();}源代码2:#include<stdio.h>void sum(){int i,sum=0;for(i=1;i<=10;i++){sum=sum+i;}printf("sum=%d\n",sum);}打开VC++6.0,选择“文件”→“新建”打开如图9所示(图9)选择“工作区”项,并在“工作空间名称”项目下输入“sum”如图10所示(图10)单击“确定”,打开如图11所示(图11)在左侧的“工作区窗口”显示了新建立的工作区选择“文件”→“新建”打开如图9所示,在“工程”项目下选择“W in32 Console Application”项,并在“工程名称”项目下输入工程名称,如“sum”,选择“添加到当前工作空间”项,如图12所示(图12)单击“确定”,打开如图13(图13)选择“一个空工程”项,单击“完成”,打开如图14所示(图14)单击“确定”,打开如图15所示(图15)在左侧的“工作区窗口”显示了新建立的工程选择“工程”→“添加到工程”→“文件”,打开如图16所示选择刚刚创建的两个文件,单击“确定”,打开如图17所示选择“组建”→“组建”(或按F7键),打开如图18所示(图18)在下端的输出窗口会有错误和警告的提示,如果没有错误选择“组建”→“执行”(或按Ctrl+F5)即可出现运行结果,如图19所示(图19)4.如何快速地规范代码缩进格式选中所需要规范的代码,按Alt+F8。

VC6.0调试快捷键

VC6.0调试快捷键

调试.应用代码更改Alt + F10 应用代码更改但不停止调试模式。

有关更多信息,请参见编辑并继续。

调试.自动窗口Ctrl + Alt +V,A显示“自动”窗口,以查看当前过程内当前执行行范围中的当前变量的值。

有关更多信息,请参见中断执行。

调试.全部中断Ctrl + Alt +Break临时停止执行调试会话中的所有进程。

仅适用于“运行”模式。

调试.断点Alt + F9 Ctrl+ Alt + B 显示新断点对话框,在其中可以添加和修改断点。

有关更多信息,请参见断点概述。

调试.调用堆栈Alt + 7 Ctrl +Alt + C显示“调用堆栈”窗口,以显示当前执行线程的所有活动过程或堆栈帧的列表。

仅适用于“运行”模式。

有关更多信息,请参见如何:使用“调用堆栈”窗口。

调试.清除所有断点Ctrl + Shift +F9清除项目中的所有断点。

调试.反汇编Alt +8 显示“反汇编”窗口。

有关更多信息,请参见如何:使用“反汇编”窗口。

调试.启用断点Ctrl + F9 在当前行上启用断点。

调试.异常Ctrl + Alt + E 显示“异常”对话框。

有关更多信息,请参见在出现异常之后继续执行。

调试.即时Ctrl + Alt + I 显示“即时”窗口,在此可计算表达式和执行个别命令。

调试.局部变量Alt + 4 Ctrl +Alt + V,L显示“局部变量”窗口,以查看当前堆栈帧中每个过程的变量及变量值。

调试.内存1 Alt + 6 Ctrl +Alt + M,1 显示“内存1”窗口,查看在“监视”或“变量”窗口中不能清楚地显示的大缓冲区、字符串和其他数据。

调试.内存2 Ctrl + Alt +M,2 显示“内存2”窗口,查看在“监视”或“变量”窗口中不能清楚地显示的大缓冲区、字符串和其他数据。

调试.内存3 Ctrl + Alt +M,3 显示“内存3”窗口,查看在“监视”或“变量”窗口中不能清楚地显示的大缓冲区、字符串和其他数据。

VC++6.0调试方法大全

VC++6.0调试方法大全

一、调试基础调试快捷键F5:开始调试Shift+F5: 停止调试F10:调试到下一句,这里是单步跟踪F11:调试到下一句,跟进函数内部Shift+F11: 从当前函数中跳出Ctrl+F10: 调试到光标所在位置F9:设置(取消)断点Alt+F9: 高级断点设置跟踪调试1、尽量使用快捷键时行调试2、观察调试信息3、高级中断设置异常调试重试->取消->调试函数堆栈,用variables或者call stack 窗口Release调试1、经常测试你的Debug和Release版本2、不要移除调试代码,如用ASSERT, TRACE等。

3、初始化变量,特别是全局变量,malloc的内存,new的内存4、当你移除某个资源时,确保你移除了所有跟这个资源相关的申明(主要是在resouce.h文中)5、使用3或者4级的警告级编译你的代码,并确保没有警告,project->setting->c/c++->warninglevel(中文版是项目->属性->C/C++->常规->警告等级)6、_debug改成NDEBUG进行调试,project->setting->C/C++->Preprocessordefinitions(中文版是项目->属性->C/C++->预处理器->预处理定义)(这里是debug和Release编译的重要不同之一)7、在Release中调试源代码,project->setting->C/C++->debug info选择programDataBase (中文版是项目->属性->C/C++->常规->调试信息格式->用于“编辑并继续”的程序数据库),project ->setting->link选上Generate debug info(中文版是项目->属性->链接器->调试->生成调试信息)8、走读代码,特别关注堆栈和指针二、TRACE宏当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了。

vc++6.0_调试详细教程(17种方法)

vc++6.0_调试详细教程(17种方法)

vc++6.0 调试详细教程Step intoStep overStep outRun to cursorWatchVariablesRegistersMemoryStop DebugCall stackDisassemblyRestart Debugger2、调试的一般过程调试,就是在程序的运行过程的某一阶段观测程序的状态。

在一般情况下程序是连续运行的,所以我们必须使程序在某一地点停下来。

我们所做的第一项工作就是设立断点;其次再运行程序;当程序在设立断点处停下来时,利用各种工具观察程序的状态。

程序在断点停下来后,有时我们需要按我们的要求控制程序的运行,以进一步观测程序的流向。

下面我们依次来介绍断点的设置,如何控制程序的运行以及各种观察工具的利用。

3、设置断点在VC中,可以设置多种类型的断点,根据断点起作用的方式把这些断点分为三类:1、与位置有关的断点;2、与逻辑条件有关的断点3、与WINDOWS消息有关的断点。

主要介绍前面两种断点。

4、设置位置断点最简单的是设置一般位置断点:¡ 把光标移到你要设断点的位置,当然这一行必须包含一条有效语句的;¡ 然后按工具条上的add/remove breakpoint 按钮或按快捷键F9。

将会在屏幕上看到在这一行的左边出现一个红色的圆点表示这里设立了一个断点5、设置位置断点-图示6、设置逻辑断点有的时候可能不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时就需要设置一种与位置有关的逻辑断点。

从EDIT 菜单中选中Breakpoints命令,这时Breakpoints对话框将会出现在屏幕上。

选中Breakpoint对话框中的Location标签,使Location页面弹出。

如下页图所示。

7、8、设置逻辑断点单击上页Condition按钮,弹出Breakpoint Condition对话框,在expression_r编辑框中写出你的逻辑表达式,最后按OK返回。

Microsoft Visual C++ 6.0 基本调试说明

Microsoft Visual C++ 6.0 基本调试说明

Microsoft Visual C++ 6.0 基本调试说明在编写较长的程序时,能够一次成功而不含有任何错误决非易事,这需要进行长期大量的练习。

编写的程序若已没有编译错误,可以成功运行。

对于程序中的错误,VC 提供了易用且有效的调试手段。

其中,单步跟踪进入子函数(Step Into,F11),每按一次F11键,程序执行一条无法再进行分解的程序行;单步跟踪跳过子函数(Step Over,F10),每一次F10键,程序执行一行;Watch 窗口可以显示变量名及其当前值,在单步执行的过程中,可以在Watch 窗口中加入所需观察的变量,辅助加以进行监视,随时了解变量当前的情况;同时,为方便较大规模程序的跟踪,可以设置断点(F9为快捷键),断点处所在的程序行的左侧会出现一个红色圆点。

选择Build | StartDebug | Go 时,程序执行到断点处程序将暂停执行,可方便用户进行变量观察。

取消断点只需在代码处再次按F9即可。

还有运行至前函数的末尾(Step Out)等都是很有效的调试工具。

具体操作步骤如下:步骤:1:右击工作栏,选择“调试”出现调试工具栏,如下图2:选择Step Over,开始调试程序。

如图1-11.2:按Step Over(或者F11)执行单步运行。

3:当执行到某个函数后,选择Step Into,进入该函数内部,如下图所示:(!):执行到函数setpoint();(2):选择Step Into,进入函数内部4:当执行到某个函数,然后执行Step over,则跳过该函数继续往下执行(!):执行到函数setpoint();(2):执行Step Over,跳过函数setpoint(),执行函数showpoint()。

5:当进入某个函数后,执行Step Out,则跳出该函数。

(!):进入函数setpoint()内部(2):执行Step Out,,则跳出函数setpoint()。

6:Run to Cursor :运行至光标所在行暂停。

vc6.0调试技巧

vc6.0调试技巧

/Zi
Program Database
创建一个程序库(PDB),包括类型信息和符号调试信息。
/ZI
Program Database for Edit and Continue
除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效
Life is like a box of chocolate, you never know what you are going to get.
二、调试的一些技巧
1、使用ASSERT和VERIFY(原则:尽量简单)
ASSERT:它接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。对于系统中出现这个宏导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如,对于一个还没有创建的窗口调用SetWindowText等。
vc6.0调试技巧
一、基本的调试设置
1、CTRL+F10:运行到当前光标处 DEBUG模式下 用F9在要看的语句上打好断点,F5调试运行,F10单步运行。
2、设置
为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。
LocalFree( lpMsgBuf );
LPVOID lpMsgBuf;
但是也要注意:由于用GetLastError插得代码七零八碎。在Watch窗里使用变量@err时就可以立即看到当前的LastError码。

VC++6.0使用说明(快捷键)

VC++6.0使用说明(快捷键)

V C++6.0使用说明(快捷键)F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容F2 书签功能: C trl+F2 –在某行设置一个书签(再按一次次是取消)F2 –跳到下一个书签位置Shift+F2 –跳到上一个书签位置C trl+Shift+F2 –删除所有书签F3 查找: C trl+F3 –在文件中查找,如果当前光标在一个字符串上,那么自动查找此字符串.相似的有C trl+FF3 –查找文件中下一个串Shift+F3 –查找文件中上一个串F4 - 如果是编译后或者Find in Files后,可以逐条定位.C trl+F4 –关闭文件Alt+F4 –关闭V C(跟WINDOWS定义的一样)F5编译并执行F5 –编译并通过V C执行C trl+F5 –不经过V C,直接执行编译后的exeShift+F5 –F5运行后,直接从V C中停止程序(可以模拟当机情况)C trl+Shift+F5 –重新开始运行F6切换窗口SplitWindow后,可以转换光标所在的窗口F7编译F7 编译工程C trl+F7 编译当前文件Alt+F7 工程设置对话框F8选择的粘滞键其实更常用的是按住Shift+方向键Alt+F8 选中的代码书写格式对齐F9设置断点C trl+F9删除所有断点Alt+F9 显示编辑断点的对话框C trl+F9断点无效F10单步执行(Debug时)C trl+F10执行到光标所在行(试试看Shift+F10什么效果)F11跟踪时进入函数内部Shift+F11跳到上一层调用栈F12跳到函数定义初(需要带Browse Info选项编译,建议不选,生成文件很大)编辑常用C trl+W 显示C lassWizard,边界面程序用的比较多C trl+Z/C trl+Y Undo/RedoC trl+U 字母转化为小写(有的V C没有设置)C trl+Shift+U 字母转化为大写(有的V C没有设置)C trl+S 保存(强烈建议编码时经常按两下,省得掉电死机时后悔,呵呵,该键在多数编辑软件都适用)C trl+D 查找(嗯,如果有SOFTI C E,那么就是呼叫它了)C trl+F 正宗的查找快捷键C trl+G 跳到文件中第n行C trl+Shift+G 光标在一个文件名上,直接跳到指定文件C trl+H 替换C trl+J,K #ifdef…#endif查找配对C trl+L 剪切一行C trl+} 匹配括号(),{}调试常用Shift+F9 Qui c kWat c h,并显示关标所在处的变量值Alt+3 Wat c h 查看窗口Alt+4 Variables 监视变量(常用)Alt+5 显示寄存器Alt+6显示内存(常用)Alt+7 显示堆栈情况(当机了多看看)Alt+8 显示汇编码还有一些常用的C trl+TAB 切换打开的文件视图,(如果按住C trl,顺序向后切换)C trl+Shift+TAB切换打开的文件视图,(如果按住C trl,顺序向前切换)TAB 选中后,整体后移一个制表符,Shift+TAB 选中后,整体前移一个制表符,Alt+0将焦点移到工作区(ES C回编辑区)Alt+2 将焦点移到输出区(ES C回编辑区)C trl+PgUp 逆序切换工作区视图C trl+PgDn 顺序切换工作区视图另外,V C没有设置打开,关闭工作区,和打开关闭输出区的快捷键,如果觉得不方便, 可以自己注册(我设置的是C trl+,和C trl+/).注册在Tools => C ustomize => KeyBoard。

Visual_C++6.0快捷键大全

Visual_C++6.0快捷键大全

VC++6.0快捷键1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。

如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。

2.查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。

3.格式化一段乱七八糟的源代码选中那段源代码,按ATL+F8。

4.在编辑状态下发现成员变量或函数不能显示删除该项目扩展名为.ncb文件,重新打开该项目。

5.如何整理ClassView视图中大量的类可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.6.定位预处理指定在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.7.如何添加系统中Lib到当前项目在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib 之间用空格格开.8.如何添加系统中的头文件(.h)到当前项目.#include ,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.9.如何在Studio使用汇编调试在WorkBench的Debugger状态下按CTRL+F7.10.怎样处理ClassZiard找不到的系统消息如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info 页中将Message filter改为Window就有了.11.如何干净的删除一个类先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。

VC6.0中如何调试程序说明大全

VC6.0中如何调试程序说明大全

56
2、变量窗口(VARIABLE WINDOW)。
在VIEW 菜单,Debug window选 Variables window; 变量窗口将 出现在屏幕上。其中显示着变量名及其对应的值。将会看到在变量观 察窗口的下部有三个标签:AUTO ,LOCAL,THIS 选中不同的标签,不同 类型的变量将会显示在该窗口中。
** 与位置有关的断点; ** 与逻辑条件有关的断点 ** 与WINDOWS消息有关的断点。
h
40
与位置有关的断点;
1、最简单的是设置一般位置断点,把光标移到你要设断点的位置; 然后按工具条上的add/remove breakpoint 按钮或按快捷键F9;在这 一行的左边出现一个红色的圆点表示设了一个断点。
5
程序调试概述
• 预防性维护
– 一条有经验的方法是桌面检查法。桌面检查一 个程序类似于核对一封信或手稿,其思想是在 内心对程序进行跟踪,确保程序逻辑正确。程 序员必须考虑各种可能的输入,并记录程序执 行期间所产生的所有结果。
h
6
VC++程序调试演示
• 程序调试概述
• Debugger工具栏简介
• 启动Debugger
h
57
3、观察窗口(WATCH WINDOW)。
在VIEW 菜单,选择Debug window,Watch window 子命令。变量 窗口将出现在屏幕上。
h
58
观察窗口中双击Name栏的某一空行,输入要查看的变量名或表 达式。回车后将会看到对应的值。观察窗口可有多页,分别对应于 标签Watch1,Watch2,Watch3等等。
h
41
2 、当在满足一定条件的情况下才停下来,设置一种与位置有关的逻辑断点。 从EDIT 菜单中选中breakpoint命令。选中Breakpoint对话框中的LOCATION标 签,使LOCATION 页面弹出。

VC6使用手册

VC6使用手册

VC6.0调试知识大全收藏My Note○常用功能:1、Restart(Ctrl+shift+F5):此debugger功能将从程序的开始(第一有效行)处全速执行,而不是从当前所跟踪的位置开始调试,这时所有变量的当前值都将被丢弃,debugger会自动停在程序的main()开始处.这时如果选择Step Over(F10)就可以逐步执行main()函数了.2、Stop Debugging(Shift+F5):此debugger功能将终止(所有)调试,并返回到常规编辑状态.3、Break(此功能常常在遇到调用函数的语句时可见.):此功能将在调试过程中的debugger 当前位置挂起程序的执行,然后就可以在调试状态一修改程序的代码,接着可以用Apply Code Changes(Alt+F10)来应用修改的代码到正在调试的程序当中.如果,当前(需要,待)可以(从DOS等窗口)输入值,挂起后将不能再输入.4、Apply Code Changes(Alt+F10):此功能可以在程序正在调试程序过程中应用(挂起)修改后的源代码.如,选择Break功能并修改代码后,只要选择Apply Code Changes(Alt+F10)就能将修改后的代码应用到正在调试的程序当中.5、Show Next Statement(Alt+Num*):此功能将显示程序代码的下一条语句,如果源代码中找不到,则在Disassembly窗口中显示语句.当在Disassembly窗口中显示时,可以单击Disassembly 返回到源代码窗口.6、Step Into(F11):此功能可以单步进入到在调试过程中所跟踪的调用函数的语句的函数内部.如,当前语句是"d.Display()",选择Step Into(F11)后,Debugger将进入Display()函数内部并停在Display()函数内部的第一条语句上.(此时, 就可以Step Over(F10)对Display()函数进行单步调试了.)7、Step Over(F10):此功能可以单步对所在函数单步调试,如果调试的语句是一个调用函数的语句时,Debugger将全速执行所调用的函数,单步(一步)通过所调用的函数,Debugger停该调用语句的下一条语句上.8、Step Out(Shift+F11):此功能将使Debugger切换回全速执行到被调用函数结束,并停在该函数调用语句的下一条语句上.当确定所调用的函数没有问题时可以用这个功能全速执行被调用函数.9、Run to Cursor(Ctrl+F10):此功能将全速执行到包含插入点光标所在的行,可以作为在插入点光标处设置常规断点的一种选择.注意,当光标处不是一个有效的执行语句时此功能将不起作用.10、Go(F5):此功能将全速执行程序直到遇到一个断点或程序结束,或直到程序暂停等待用户输入.注意,此功能最能有效的调试循环,常将断点设置在循环体内,重复的按F5全速执行循环体可以测试循环过程中的产生的变化.Step Into Specific Function:此功能可以可以单步通过程序中的指令,并进入指定的函数调用,此功能对于函数的嵌套层不限.From 《visual C++ 6.0开发工具与调试》1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。

VC++6.0快捷键

VC++6.0快捷键

VC++6.0快捷键功能分类快捷键说明File(文件)Ctrl+N New新建工程Ctrl+OOpen 打开文件Find (查找)Alt+F3/Ctrl+F 弹出查找对话框F3查找下一个Shift+F3 查找上一个Ctrl+F3 向下查找下一个Ctrl+Shift+F3 查找上一个Ctrl+]/Ctrl+E 寻找下一半括弧Ctrl+Shift+]寻找下一半括弧并选定括弧之间的部分(包括括弧)Ctrl+Shift+E寻找下一半括弧并选定括弧之间的部分(包括括弧)F4 寻找下一个错误/警告位置Shift+F4 寻找上一个错误/警告位置Ctrl+G Goto(定位,到某行某变量等)Ctrl+Alt+T Brings up the completion list box提出函数列表框,用以方便地插入函数显示Ctrl+T显示变量类型Ctrl+Shift+Space显示函数参数Ctrl+Shift+8 将所有跳格和空格,变成“^”和“’”,或者还原格式Ctrl+U 将选定区域转换成小写Ctrl+Shift+U 将选定区域转换成大写Alt+F8自动格式重排设置Alt+F7project setting工程设置Build (建立)F7 Build(编绎并链接成exe文件)Ctrl+F7 Compile(编译)Ctrl+F5 Execute(编译+链接+运行)Ctrl+Shift+F5 Restarts the program(重新运行程序)Ctrl+Break Stops the build(停止编译)Debug (调试)F5 Go(顺序执行)F11 step into (顺序执行,进入循环或函数)F10 step over(顺序执行,不进入循环或函数)Shift+F11 step out(跳出当前函数)Ctrl+F10 Run to cursor(自动执行到用户光标所指的语句前)Shift+F5 Stop Debugging(停止调试)F9 Insert/Remove breakpoint(在当前行插入/去掉断点)Ctrl+F9Enable/Disable a breakpoint(应用/屏蔽断点)Ctrl+Shift+F9去掉所有断点1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。

程序调试

程序调试

VC++6.0中的几个程序调试快捷键在VC++6.0中的单步调试:调试重要的几个键:F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.F5调试状态运行程序,程序执行到有断点的地方会停下来.F10单步执行程序.CTRL+F10运行到光标所在行.F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.SHIFT+F11跳出当前所在函数.步骤:1,保存为c或c++文件2,根据断点调试找到错误处。

3,采用F10或F11单步调试找到精确的错误处。

其中f10是跳过函数调用,f11是进入函数体调试。

一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。

4,在调试过程中,肯定得监视程序中的变量。

在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。

具体怎样设置自己体会吧。

在调试过程中,鼠标轻轻放在变量上也会显示该变量的值5,vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。

右键——〉在debug(或调试)选择项的勾勾上。

了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢?1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.F5调试状态运行程序,程序执行到有断点的地方会停下来.F10单步执行程序.CTRL+F10运行到光标所在行.F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.SHIFT+F11跳出当前所在函数.特别说明:a.有的地方不能下断点.比如空行,基本类型定义语句(不初始化),等等非执行语句.比如int i; // 此行不能下断点int j=0;// 这里可以下CStringstr;// 这里可以下intk = Max(i,j);// 这里可以下b.不是所有断点都会(断).比如下断点的语句在程序里面没有被执行.c.此外,ALT+F9还可以下条件断点,不过这个不常用,有兴趣的可以自己研究:)2.如何调试Release版的程序?有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的. 怎么解决呢?其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项. 在release的默认设置下,ALT+F7 ,调出工程设置对话框,切换到link选项卡,勾选"Generate debug info",然后再切换到C/C++选项卡,在"Optimizations"里面选"Disable(Debug)",在下面的"Debug info"里面选"Program Database for Edit and Continue".然后点OK保存设置,重新编译程序,下断点即可.3.上面两点已经能应付很多种情况了,但是有时候即使在debug下也不能下断点,我以前也曾经遇到过这种问题,一个调了4层的dll,就是不能下断点.其实还除了上面的方法,还有一种最底层的实现技术:使用汇编.细心的人可能会发现,有时候在调试状态下当程序出现异常的时候,光标会指向汇编代码,而这个代码就是int 3,这其实是一个中断.在你的代码的任意地方加上__asm{int 3};用debug编译,然后直接运行程序.当程序执行到上述代码的时候,就会出现一个框,告诉你说一大堆信息,说程序错了,下面有"调试"、"终止"、"忽略",不用理,点调试就可以进入跟踪了。

VC快捷键以及调试方法

VC快捷键以及调试方法

VC快捷键以及调试方法VC(Visual Studio)是一款被广泛使用的集成开发环境(IDE),用于开发各种类型的应用程序。

在使用VC进行开发时,掌握一些常用的快捷键和调试方法可以提高开发效率和问题排查能力。

下面是一些常用的VC快捷键:1. Ctrl+C:复制选定内容2. Ctrl+X:剪切选定内容3. Ctrl+V:粘贴剪切/复制的内容4. Ctrl+Z:撤销上一步操作5. Ctrl+Y:恢复上一步被撤销的操作6. Ctrl+A:选择全部内容调试快捷键:1.F5:启动调试,开始运行程序2.F10:逐过程调试,逐行执行代码3.F11:逐语句调试,进入函数/方法内部执行4. Shift+F11:跳出当前函数/方法,返回调用处5. Ctrl+F5:在无调试的情况下运行程序文件/项目管理快捷键:1. Ctrl+N:新建文件2. Ctrl+O:打开文件3. Ctrl+S:保存文件4. Ctrl+Shift+N:新建项目5. Ctrl+Shift+O:打开项目6. Ctrl+Shift+S:全部保存/查找快捷键:1. Ctrl+F:查找2. Ctrl+H:替换3.F3:查找下一个4. Shift+F3:查找上一个5. Ctrl+Shift+F:全局调试方法:1. 直接运行:对于简单的程序,可以直接运行并观察输出结果,使用Ctrl+F5快捷键启动程序。

2.设置断点:在代码行左侧单击,会在该行设置一个红色圆点,表示断点。

启动调试后,程序会在断点处暂停执行,可以逐行调试。

3.条件断点:右击断点所在行,选择“条件断点”,可以设置断点被激活的条件,以便更加精确地检查程序运行状态。

4.单步调试:使用F10和F11快捷键,在程序执行过程中逐行跟踪和检查变量值。

F10逐过程调试,F11逐语句调试。

5.异常处理:当程序发生异常时,调试器会捕获并显示异常信息。

可以通过设置异常断点来捕获特定类型的异常。

6. 调试输出:使用OutputDebugString函数在代码中插入调试信息,并在输出窗口中查看。

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

调试程序可以帮助了解程序是怎样运行的。

1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release状态。

“C/C++”标签页中的Category选General,Optimizations选Disable(Debug),Debug info选Program Database。

在“Link”标签页中选中Generate debug info复选框。

注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。

3、Release和Debug有什么不同。

Release版称为发行版,Debug版称为调试版。

Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。

Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。

Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),比如MFC42.DLL。

这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。

而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42D.DLL。

在没有安装Visual C++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择use static dll when link。

4、ASSERT和VERIFY有什么区别ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然编译,但不再判断真假。

所以后者更安全一点。

例如ASSERT(file.Open(strFileName)),一旦到了Release版本中,这一行就忽略了,file根本就不Open()了,而且没有任何出错的信息。

如果用VERIFY()就不会有这个问题。

5、Workspace和Project之间是什么样的关系每个Workspace可以包括几个project,但只有一个处于Active状态,各个project之间可以有依赖关系,在project的Setting…中可以设定,比如那个Active状态的project可以依赖于其他的提供其函数调用的静态库。

6、如何在非MFC程序中使用ClassWizard在工程目录下新建一个空的.RC文件,然后加入到工程中就可以了。

7、如何设置断点按F9在当前光标处增加一个断点和取消一个断点。

另外,在编辑状态下,按Ctrl+B组合键,弹出断点设置对话框。

然后单击【Condition…】按钮弹出设置断点条件的对话框进行设置。

8、在编辑状态下发现成员变量或函数不能显示提示,如何打开显示功能这似乎是目前这个Visual C++ 6.0版本的一个bug,可按如下步骤使其正常,如再出现,可如法炮制:(1)关闭Project,(2)删除“工程名.ncb”文件,(3)重新打开工程9、如何将一个通过ClassWizard生成的类彻底删除首先在工作区的FileView中选中该类的.h和.cpp文件,按delete删除,然后在文件管理器中将这两个文件删除,再运行ClassWizard,这时出现是否移走该类的提示,选择remove就可以了。

10、如何将在Workspace中消失的类找出来打开该类对应的头文件,然后将其类名随便改一下,这个时候工作区就会出现新的类,再将这个类改回原来的名字就可以了。

还可以用以下方法:(1)关闭VC,删除文件夹中的*.clw文件,然后重新打开VC,重建。

(2)备份.h和.cpp文件,然后删除.h和.cpp文件,重新加入。

(3)在ClassWizard中为这个类生成一个消息处理函数,你就可以在ClassView中看到了,这样可以不用关闭、重启VC。

你可以手工删除加进的函数。

11、如何清除所有的断点菜单【Edit】->【Breakpoints…】,打开“Breakpoints”对话框,单击【Remove All】按钮即可。

快捷键是“Ctrl + Shift + F8”。

12、如何在ClassWizard中选择未列出的信息打开“ClassWizard”对话框,然后切换到“Class Info”页面。

改变“Message filter”,如选择“Window”,“Message”页面就会出现Window的信息。

13、如何检测程序中的括号是否匹配把光标移动到需要检测的括号前面,按快捷键“Ctrl + ]”。

如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告。

14、如何查看一个宏(或变量、函数)的定义把光标移动到要查看的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的相关菜单),如果没有建立浏览文件,就会出现提示对话框,按【确定】按钮,然后就会跳到该宏(或变量、函数)定义的地方。

15、如何添加Lib文件到当前工程单击菜单【Project】->【Settings…】弹出“Project Setting”对话框,切换到“Link”标签页,在“Object/library modules”处输入Lib文件名称,不同的Lib之间用空格隔开。

16、如何快速删除项目下的Debug文件夹中临时文件在工作区的FileView视图中选中对应的项目,单击右键弹出菜单,选择【Clean(selection only)】菜单即可。

17、如何快速生成一个现有工程(除了工程名外),其它完全相同的新工程。

在新建工程的“New”对话框中选择“Custom Appwizard”项,输入新工程的名字,单击【OK】按钮。

出现“Custom AppWizard”项,输入新工程的名字,单击【OK】按钮。

出现“Custom AppWizard-Step 1 of 2”对话框,选择“An existing Project”项,单击【Next】按钮。

出现“Custom AppWizard-Step 2 of 2”对话框,选择现有工程的工程文件名,最后单击【Finish】按钮。

编译后就生成一个与现有工程相同但可以重新取名的工程AppWizard。

现在就可以项用MFC AppWizard一样用这个定制的向导。

如果不想用了,可以在Visual C++ 6.0安装目录下Common\MSDev98\Template目录中删除该Wizard对应的.awx和.pdb文件。

18、如何解决Visual C++ 6.0不正确连接的问题情景:明明之前改动了一个文件,却要把整个项目全部重新编译链接一次。

刚刚链接好,一运行,又提示重新编译链接一次。

这是因为出现了未来文件(修改时间和创建时间比系统时间晚)的缘故。

可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间晚的文件全部删除,然后再重新“Rebuild All”一次。

19、引起LNK2001的常见错误都有哪些遇到的LNK2001错误主要为:unresolved externa l symbol “symbol”如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。

一般来说,发生错误的原因有两个:一时所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。

一下是可能产生LNK2001错误的原因:1、由于编码错误导致的LNK2001错误1)不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。

例如,如果在C++源文件内声明了一个变量“var1”,却视图在另一个文件内以变量“var1”访问改变量。

2)如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。

3)调用函数是如果所用的参数类型头函数声明是的类型不符将会产生LNK2001错误。

4)视图从基类的构造函数或析构函数中调用虚函数时将会导致LNK2001错误。

5)要注意函数和变量的可公用性,只有全局变量、函数时可公用的。

静态函数和静态变量具有相同的使用范围限制。

当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。

2、由于编译和联机的设置而造成的LNK2001错误1)如果编译时使用的时/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会北链接进工程文件。

这种情况下使用/NOD将导致LNK2001错误2)如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时讲的到“unresolved external on _WinMain@16”的LNK2001错误信息。

3)使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”的引用。

如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行链接,将在__imp__func上发生LNK2001错误。

如果不使用/MD选项编译,在使用MSVCxx.LIB链接时也会发生LNK2001错误。

4)使用/ML选项编译时,如用LIBCMT.LIB链接回在_errno上发生LNK2001错误。

5)当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产生LNK2001错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。

6)不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。

7)在不同的模块中使用内联和非内联的编译选项能够导致LNK2001错误。

如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头问卷安里却关闭了函数内联(没有inline关键字),只是将得到错误信息。

为避免该问题的发生,应该在相应的头文件中用inline关键字标志为内联函数。

8)不正确的/SUBSYSTEM或ENTRY设置也能导致LNK2001错误。

20、如何调试一个没有源码的exe文件调用的dll在Visual C++ 6.0中,进入“Project Setting”对话框然后选择Debug标签页。

通常Visual Studio 默认“executable for debug session”为可执行文件名,但可以将它改成任何你想要的程序。

相关文档
最新文档