vc的调试,可以参考如下:
检测程序中的括号是否匹配
把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快
捷键“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 <FileName.h>,告诉编译到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文件。

12.如果让控制台应用程序支持mfc类库

可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc是多
线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,
在use run-time library 下拉框中选择debug multithread。

13.如何汉化只有可执行代码的.exe 文件

在nt 下利用vc open file 以resources方式打开*.exe 文件,直接修改资源文件,然后保存即可。

附:VC项目文件说明

.opt 工程关于开发环境的参数文件。如工具条位置等信息;
.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.
.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出
问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你
是否重建.
.dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW
(DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多.
.plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用
处不大.在Tools->Options里面有个选项可以控制这个文件的生成.
.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.
.mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否
转换成新的DSP格式.
.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,
可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.
.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.
.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.
.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.
.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.
.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后
会自动生成。

如何在vc的一个工程中加入另外一个工程,并且可以一起调试。
我的程序是这样的:主程序A调用B.exe,然后调用C.exe。现在,我想调试c,但是c只能被A调用,不能单独运行。我想将a和c两个工程一起调试,请问有什么办法?

 首先vc一般新建一个项目(workspace)都是一个project,
如果需要多个工程:
方法1:新建一个工程,然后选中“add to current workspace”即可。
方法2:已有工程,可以通过“project”菜单-》“insert project to workspace"加入已有的菜单。
一起调试的问题:
首先一个workspace里面有多个工程的时候,你要设定一个活动工程,就是你点”执行‘的时候是从这个工程启动的,而不是别的工程,这个可以在工程名字上(不是workspace上)点击右键,选“set as active project”即可。然后设定断点,即可调试到指定地方。
注意的一个地方:如果要使用别的工程的文件,比如A工程的a.cpp要包括B工程的b.h,那么a.cpp里面要使用相对路径来指定这个b.h的路径,而不能直接写成#include "b.h"这样的。另一种更好的跟能移植的解决方案就是:设置A工程的属性:project->project settings,选中A工程,然后到c++标签,拉到preprocesser,在additonal include directories中加入B工程的路径,这样就可以直接使用#include "b.h"在A工程使用了。要调试b.h或者其他的,重要在他里面设定断点即可。

调试进程外服务(Debugging Out-Of-Process Server)

因为服务的方法和事件的实现要靠客户来触发,所以调试服务必须要先启动客户程序。

方法一:

1. 在Project àSetting的Debug Tab上输入客户程序;

2. 在服务程序代码中设置断点既可调式。

方法二:(在客户工程中启动调试任务)

1. 打开客户工程,设置为Debug编译模式;打开JIT( Jst-In-Time )选项。

[ ToolàOptionàDebug Tab] 选定 "Just-In-Time Debugging " 和

"OLE RPC Debugging" 选项。

 

2. 在代码中,调用服务的那行代码处设置断点,启动Debugger运行客户程序;

3. 当调试在断点处(调用服务处)停止时,跟进(Setp Into)调用,如果你的应用

程序连到了MFC,VC会自动打开进入到正确合适的代码处;

4. 用步进( Step Over )调试直至出现汇编,在客户stub DLL的开始处标记;

5. 继续运行通过Stub和Proxy单步调试,当步进到服务的方法时,VC会自动启动

debugger的另一个实例。

 

< 参见MSDN  "HOWTO:Debug OLE Application >

Debug the Message ActiveX Control

[Project àSetting à Debug Tab,在"Executable For Debug Session" 的中选

择合适的程序]

 

调试远程对象(Debug Remote Object)

Attaching the Debugger to a Remote Process

1. 打开客户程序,设置好断点;

2. 用Debugge运行程序直至触发断点,确定此此时对象在服务方已被激活;

3. 在组件所在的机子上启动VC,激活Attach To Process命令,从弹出的进程列表

框中选择组件或她的Surrogate,使Debugger吸附到对象的进程中。

4. 在VC环境中打开组件源代码,设置好断点;

5. 在客户端,恢复运行程序,当远程对象运行到断点时,停止