程序调试技术杂谈

程序调试技术杂谈

ID:20720539

大小:1.60 MB

页数:50页

时间:2018-10-15

程序调试技术杂谈_第1页
程序调试技术杂谈_第2页
程序调试技术杂谈_第3页
程序调试技术杂谈_第4页
程序调试技术杂谈_第5页
资源描述:

《程序调试技术杂谈》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、程序调试技术杂谈武汉天喻软件有限责任公司国家企业信息化应用支撑软件工程技术研究中心C++培训系列内容程序的错误分类程序的生成生成的配置管理程序的调试和调试相关的配置设置几种类型文件的调试程序设计中的建议备注:不讲解Web和远程调试程序错误类型生成错误由编译系统来检查:将警告的级别提高到最高级;启动代码分析工具怎样看各种连接错误逻辑错误程序流程中地错误,需要调试人员对程序的执行逻辑有清楚的认识结合调试工具定位错误的位置和原因程序的生成配置解决方案和项目配置解决方案配置项目之间的依赖关系;启动项目可以执

2、行多个项目调试进行配置管理项目配置确定各个项目的内部生成属性系统默认情况下生成“调试”配置和“发布”配置。自动配置“调试”配置以便调试应用程序,配置“发布”配置以便用于应用程序的最终发布配置管理器的使用配置管理器使用程序调试调试设置程序中的应用启动调试的方法第三方程序应用程序DLL调试执行及相关控制调试器设置启动调试设置界面,理解各个选项的含义“工具”--〉“选项”对话框--〉“调试”文件夹--〉选择所需选项的类别C++调试配置的项目设置C++调试配置的项目设置C++调试配置的项目设置C++调试配置

3、的项目设置在VisualC++中启用调试功能在VisualC++中启用调试如果在编译程序时定义了_DEBUG符号,则将启用某些调试功能(如断言)。可以用下列两种方法之一定义_DEBUG在源代码中指定#define_DEBUG,指定/D_DEBUG编译器选项。(如果是在VisualStudio中使用向导创建项目,则/D_DEBUG将在“调试”配置中自动定义。)在定义了_DEBUG后,编译器将编译包围在#ifdef_DEBUG和#endif内的代码段程序数据库(PDB)文件作用保存着调试和项目状态信息指

4、定符号路径“工具”菜单-->“选项”对话框-->“调试”节点-->“符号”类别:“符号文件(.pdb)位置”手动加载符号从“模块”窗口中手动加载DBG文件启动调试的方法启动调试的方法不属于解决方案的可执行文件在VisualStudio外部启动可执行文件并使用VisualStudio调试器附加到该文件需要手动执行一些步骤,不能调试启动过程中发生的问题,不能调试不等待用户输入而迅速完成的程序为此类程序创建EXE项目属于解决方案的调试EXEDLL控制台调试的启动调试的启动调试命令启动,逐语句,逐过程调试多

5、进程停止调试或停止执行调试中断达到断点;发生异常;手工中断更改调试多个程序时的中断行为工具”->“选项”->“调试”->“常规”->“一个进程中断时则中断所有进程”单步执行逐语句逐过程跳出单步执行特定函数运行到指定位置设置断点运行到光标位置运行到指定函数查找函数设断点在“调用堆栈”窗口中,右击该函数名,并从快捷菜单中选择“运行到光标处”。调试断点断点简单断点“调试”->”切换断点”源代码行的最左边空白鼠标左键单击指定源代码行的右键菜单地址断点“反汇编”窗口中采用上面的方法设置函数断点删除、启用、禁用

6、断点删除、启用、禁用所有断点断点编辑断点位置指定断点筛选器指定命中次数指定断点条件指定跟踪点/断点操作调试器中的数据查看使用数据提示功能可视化工具变量窗口快速监视对话框寄存器窗口内存窗口调用堆栈窗口反汇编窗口模块窗口调试器中的表达式VisualStudio调试器包括表达式计算器,当您在“快速监视”对话框、“监视”窗口或“即时”窗口中输入表达式时,这些计算器可以对其进行计算。这些表达式计算器还可以在“断点”窗口和调试器中的许多其他位置使用异常处理(调试)调试器识别下列类别的异常:C++异常公共语言运行

7、时异常托管调试助手本机运行时检查Win32异常异常处理(调试)在引发异常时中断的方法异常中断的管理本机代码程序调试优化的代码使用__debugbreak函数使用断言内存泄漏的检测和隔离断言通过在代码中大量使用断言,可以在开发期间捕捉许多错误。为所做的每个假定编写一个断言是很好的规则。例如,如果假定某个参数不为NULL,请使用一条断言语句检查该假定CRT断言_ASSERT,_ASSERTE使用断言一般不需要使用printf检查堆是否损坏_ASSERTE(_CrtCheckMemory());检查指针有

8、效性_ASSERTE(_CrtIsValidPointer(address,size,TRUE);_ASSERTE(_CrtIsValidPointer(myData);检查内存块_ASSERTE(_CrtIsMemoryBlock(myData,size,&requestNumber,&filename,&linenumber));MFC断言ASSERT,VERIFY(注意ASSERT的副作用)ASSERT(pObject1->IsKindOf(RUNTIME_CL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。