Visual C++调试方法大全 一、调试基础 调试快捷键 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 宏也就随之被激活了。但在程序的 Release 版本中,它们是被完全禁止的。下面是一个典型的 TRACE 语句: … int nCount =9; CString strDesc("total"); TRACE("Count =%d,Description =%s\n",nCount,strDesc); … 可以看到,TRACE 语句的工作方式有点像C 语言中的printf 语句,TRACE 宏参数的个数是可变的,因此使用起来非常容易。如果查看MFC 的源代码,你根本找不到TRACE 宏,而只能看到TRACE0、TRACE1、TRACE2 和 TRACE3 宏,它们的参数分别为 0、1、2、3。 个人总结:最近看网络编程是碰到了 TRACE 语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于找到了,方法如下: ...