所在的位置: c++ >> 基本简介 >> (4)C++调试技能

(4)C++调试技能

(4)C++调试技能

自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把VisualC++开发工具与调试技能整理摘录以下,希望对大家有用,省去大家再去搜索的烦恼。

1.如何在Release状态下进行调试

Project-Setting=ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debutinfo选ProgramDatabase。在Link标签中选中Generatedebuginfo复选框。

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

lease和Debug有甚么不同

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

Debug中可以单步履行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。Release版运行速度较快,可执行文件较小,但在其编译条件下没法履行调试功能。

Release的exe文件链接的是标准的MFCDLL(UseMFCinasharedorstaticdll)。这些DLL在安装Windows的时候,已配置,所以这些程序能够在没有安装VisualC++6.0的机器上运行。而Debug版本的exe链接了调试版本的MFCDLL文件,在没有安装VisualC++6.0的机器上不能运行,由于缺相应的DLL,除非选择usestaticdllwhenlink。

SERT和VERIFY有甚么区分

ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容依然翻译,但不再判断真假。所以后者更安全一点。

例如ASSERT(en(strFileName))。

一旦到了Release版本中,这一行就疏忽了,file根本就不Open()了,而且没有任何出错的信息。如果用VERIFY()就不会有这个问题。

rkspace和Project之间是什么样的关系

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

5.如何在非MFC程序中使用ClassWizard

在工程目录下新建一个空的.RC文件,然后加入到工程中就可以了。

6.如何设置断点

按F9在当前光标处增加一个断点和取消一个断点。

另外,在状态下,按Ctrl+B组合键,弹出断点设置对话框。然后单击按钮弹出设置断点条件的对话框进行设置。

7.在状态下发现成员变量或函数不能显示提示是如何打开显示功能

这似乎是目前这个VisualC++6.0版本的一个bug,可按以下步骤使其正常,如再出现,可依样画葫芦:

(1)关闭Project

(2)删除“工程名.ncb”文件

(3)重新打开工程

8.如何将一个通过ClassWizard生成的类完全删除

首先在工作区的FileView中选中该类的.h和.cpp文件,按delete删除,然后在文件管理器中将这两个文件删除,再运行ClassWizard,这时候出现是不是移走该类的提示,选择remove就可以了。

9.如何将在workspace中消失的类找出来

打开该类对应的头文件,然后将其类名随意改一下,这个时候工作区就会出现新的类,再将这个类改回原来的名字就可以了。

10.如何清除所有的断点

菜单-,打开“Breakpoints”对话框,单击按钮便可。快捷键是“Ctrl+Shift+F8”。

11.如何再ClassWizard中选择未列出的信息

打开“ClassWizard”对话框,然后切换到“ClassInfo”页面。改变“Messagefilter”,如选择“Window”,“Message”页面就会出现Window的信息。

12.如何检测程序中的括号是不是匹配

把光标移动到需要检测的括号前面,按快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出1声正告。

13.如何查看一个宏(或变量、函数)的定义

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

14.如何添加Lib文件到当前工程

单击菜单-弹出“ProjectSetting”对话框,切换到“Link”标签页,在“Object/librarymodules”处输入Lib文件名称,不同的Lib之间用空格格开。

15.如何快速删除项目下的Debug文件夹中临时文件

在工作区的FileView视图中选中对应的项目,单击右键弹出菜单,选择菜单便可。

16.如何快速生成一个现有工程除工程名外完全相同的新工程

在新建工程的“New”对话框中选择“CustomAppwizard”项,输入新工程的名字,单击按钮。出现“CustomAppWizard”项,输入新工程的名字,单击按钮。出现“CustomAppWizard-Step1of2”对话框,选择“AnexistingProject”项,单击按钮。出现“CustomAppWizard-Step2of2”对话框,选择现有工程的工程文件名,最后单击按钮。编译后就生成一个与现有工程相同但可以重新取名的工程AppWizard。

现在就可以项用MFCAppWizard一样用这个定制的向导。如果不想用了,可以在VisualC++6.0安装目录下Common\MSDev98\Template目录中删除该Wizard对应的.awx和.pdb文件。

17.如何解决VisualC++6.0不正确连接的问题

情形:明明改动了一个文件,却要把全部项目全部重新编译链接一次。刚刚链接好,1运行,又提示重新编译链接一次。

这是由于出现了未来文件(修改时间和创建时间比系统时间晚)的原因。可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间的文件全部删除,然后再重新“RebuildAll”一次。

18.引发LNK的常见毛病都有哪些

遇到的LNK毛病主要为:unresolvedexternalsymbol“symbol”

如果链接程序不能在所有的库和目标文件内找到所援用的函数、变量或标签,将产生此错误信息。

内容转载自
































什么药治疗白癜风
得白癜风有什么症状



转载请注明:http://www.nydjfy.com/jbjj/648.html

  • 上一篇文章:
  •   
  • 下一篇文章: