调试程序可以帮助的了解程序是怎样运行的_第1页
调试程序可以帮助的了解程序是怎样运行的_第2页
调试程序可以帮助的了解程序是怎样运行的_第3页
调试程序可以帮助的了解程序是怎样运行的_第4页
调试程序可以帮助的了解程序是怎样运行的_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、调试程序可以帮助的了解程序是怎样运行的。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的中间状态,所

2、有的 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 在

3、 安装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),一旦到了 Releas

4、e 版本中,这一行就忽略了,file根本就不Open() 了,而且没有任何出错的信息。如果用VERIFY()就不会有这个问题。5、Workspace和Project之间是什么样的关系每个Workspace可以包括几个 project,但只有一个处于 Active状态,各个project之间可以有依赖关系,在project 的Setting中可以设定,比如那个 Active状态的project 可以依赖于其他的提供其函数调用的静态库。6、如何在非 MFC程序中使用 ClassWizard在工程目录下新建一个空的.RC文件,然后加入到工程中 就可以了。7、如何设置断点按F9在当前光标处增加一个断点

5、和取消一个断点。另外,在编辑状态下,按 Ctrl+B组合键,弹出断点设置对话框。然后单击【Condition】按钮弹出设置断点条件的 对话框进行设置。8、在编辑状态下发现成员变量或函数不能显示提示,如何打开显示功能这似乎是目前这个 Visual C+ 6.0版本的一个bug,可按 如下步骤使其正常,如再出现,可如法炮制:(1)关闭Project , (2)删除 工程名.ncb”文件,(3)重新 打开工程9、如何将一个通过 ClassWizard生成的类彻底删除首先在工作区的FileView中选中该类的.h和.cpp文件,按 delete删除,然后在文件管理器中将这两个文件删除,再 运行Clas

6、sWizard ,这时出现是否移走该类的提示,选择 remove就可以了。10、如何将再 Workspace中消失的类找出来打开该类对应的头文件,然后将其类名随便改一下,这个 时候工作区就会出现新的类,再将这个类改回原来的名字 就可以了。还可以用以下方法:(1)关闭VC,删除文件夹中的*clw文件,然后重新打开VC,重建。(2)备份.h和.cpp文件,然后删除.h和.cpp文件,重新 加入。(3)在ClassWizard中为这个类生成一个消息处理函数, 你就可以在Class View中看到了,这样可以不用关闭、重 启VCo你可以手工删除加进的函数。11、如何清除所有的断点菜单【Edit>

7、 Breakpoints,打开 Breakpoints ”对话框,单击【Remove All 按钮即可。快捷键是 Ctrl + Shift + F8 "12、如何再ClassWizard中选择未列出的信息打开ClassWizard ”对话框,然后切换到 Class Info ”页面。 改变 Message filter"如选择 Window工 Message”页面 就会出现 Window 的信息。13、如何检测程序中的括号是否匹配把光标移动到需要检测的括号前面,按快捷键Ctrl + ”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标 不移动,并且机箱喇叭还会发出一声警告

8、。14、如何查看一个宏(或变量、函数)的定义 把光标移动到要查看的一个宏上,就比如说最常见的 DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的相关菜单),如果没有建立浏览文件,就会出现提示对话 框,按【确定】按钮,然后就会跳到该宏(或变量、函数)定义的地方。15、如何添加Lib文件到当前工程单击菜单【Project】【Settings】弹出Project Setting ” 对话框,切换到Link ”标签页,在Object/library modules ” 处输入Lib文件名称,不同的Lib之间用空格格开。16、如何快速删除项目下的 Debug文件夹中临时文件 在工作区的

9、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 ”对话框,选择现

10、有工程的工程文 件名,最后单击【Finish】按钮。编译后就生成一个与现 有工程相同但可以重新取名的工程AppWizard 。现在就可以项用 MFC AppWizard 一样用这个定制的向导。 如果不想用了,可以在 Visual C+ 6.0安装目录下 CommonMSDev98Template 目录中删除该 Wizard 对应 的.awx和.pdb文件。18、如何解决Visual C+ 6.0不正确连接的问题 情景:明明之间改动了一个文件,却要把整个项目全部重新编译链接一次。刚刚链接好,一运行,又提示重新编译链接一次。这是因为出现了未来文件(修改时间和创建时间比系统时 间晚)的缘故。可以这样

11、处理:找到工程文件夹下的debug 目录,将创建和修改时间都比系统时间晚的文件全部删除, 然后再重新Rebuild All ”一次。19、引起LNK2001的常见错误都有哪些遇到的 LNK2001 错误主要为:unresolved external symbol Symbol ”如果链接程序不能在所有的库和目标文件内找到所引用的 函数、变量或标签,将产生此错误信息。一般来说,发生错误的原因有两个:一时所引用的函数、 变量不存在,拼写不正确或者使用错误;其次可能使用了 不同版本的链接库。一下是可能产生LNK2001错误的原因:1、由于编码错误导致的 LNK2001错误1)不相匹配的程序代码或模块

12、定义 (.DEF)文件导致 LNK2001 o例如,如果在 C+源文件了内声明了一变量Var1 ”,却视图在另一个文件内以变量Var1 ”访问改变量。2)如果使用的内联函数是在.cpp文件内定义的,而不是在 头文件内定义将导致 LNK2001错误。3)调用函数是如果所用的参数类型头函数声明是的类型不 符将会产生LNK2001错误。4)视图从基类的构造函数或析构函数中调用虚拟函数时将 会导致LNK2001错误。5)要注意函数和变量的可公用性,只有全局变量、函数时 可公用的。静态函数和静态变量具有相同的使用范围限制。 当试图从文件外部方位任何没有在该文件内声明的静态变 量时将导致编译错误或 LNK

13、2001错误。2、由于编译和联机的设置而造成的LNK2001错误1)如果编译时使用的时/NOD(/NODERAULTLIB) 选项, 程序所需要的运行库和 MFC时将得到又编译器写入目标 文件模块,但除非在文件中明确包含这些库名,否则这些 库不会北链接进工程文件。这种情况下使用/NOD将导致LNK2001 错误2)如果没有为 wWinMainCRTStartup 设定程序入口,在 使用 Unicode 和 MFC 时讲的到 Unresolved external on_WinMain16 ”的 LNK2001 错误信息。3)使用/MD选项编译时,既然所有的运行库都被保留在 动态链接库之内,源文

14、件中对 fUnc”的引用,在目标文件 里即对_imp_func ”的引用。如果试图使用静态库 LIBC.LIB 或 LIBCMT.LIB 进行链接,将在 _imp_func 上发生LNK2001错误。如果不使用/MD选项编译,在使 用MSVCxx.LIB 链接时也会发生 LNK2001错误。4)使用/ML选项编译日如用 LIBCMT.LIB 链接同在 _errno上发生LNK2001错误。5)当编译调试版的应用程序时, 如果采用发行版模态库进 行链接也会产生LNK2001错误;同样,使用调试版模态库 链接发行版应用程序时也会产生相同的错误。6)不同版本的库和编译器的混合使用也能产生问题,因为新

15、版的库里可能包含早先的版本没有的符号和说明。7)在不同的模块中使用内联和非内联的编译选项能够导致 LNK2001错误。如果创建 C+库时打开了函数内联(/Ob1 或/Ob2),但是在描述该函数的相应头问卷安里却关闭了函 数内联(没有inline关键字),只是将得到错误信息。为避 免该问题的发生,应该在相应的头文件中用inline关键字标志为内联函数。8)不正确的/SUBSYSTEM 或ENTRY设置也能导致 LNK2001 错误。20、如何调试一个没有源码的 exe文件调用的dll在Visual C+ 6.0中,进入 Project Setting ”对话框然后选 择 Debug 标签页。通常

16、 Visual Studio 默认 executable for debug session ”为可执行文件名,但可以将他改成任何你想 要的程序。甚至可以指定不同的工作目录以及传递参数到你的程序。这个技术常用来调试 Dlls、名字空间扩展、COM 对象和其他从某些EXE以及从第三方的EXE中调用的plug-in 程序。21、Visual C+ 6.0工程中的项目文件都表示什么。.opt:工程关于开发化境的参数文件,如工具条位置等信 息。.aps(AppStudio File):资源辅助文件,二进制格式,一般 不用去管他。.clw: ClassWizard信息文件,实际上是INI文件格式,又 兴

17、趣可以研究一下。有时候ClassWizard出了问题,手工修改CLW文件可以解决。如果此文件不存在的话,每次用 ClassWizard的时候会提示是否重建。.dsp(DevelopStudio Project):项目文件,文本格式,不过 不熟悉的不要手工修改。.dsw(DevelopStudio Workspace):是工作区文件,其他特 点和.dsp差不多。.plg :是编译信息文件,编译时的error和warning信息文 件(实际上时一个html文件),一般用处不大。在单击菜单Tool -> Option 弹出的对话框里面有个选项可以控 制这个文件的生成。.hpj(Help Project):是生成帮助文件的工程,用 microsoft Help Compiler 可以处理。.mdp(Microsoft DevStudio Project) :是旧版本的项目文 件,如果要打开此文件的话,会提示你是否转换成新的.dsp 10格式。.bsc:是用于浏览项目信息的,如果用Source Brower的话就必须用这个文件。如果不用这个功能的话,可以在Project Options 里面去掉 Generate Browse Info F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论