




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序调试技术杂谈,武汉天喻软件有限责任公司国家企业信息化应用支撑软件工程技术研究中心,C+培训系列,内容,程序的错误分类程序的生成生成的配置管理程序的调试和调试相关的配置设置几种类型文件的调试程序设计中的建议备注:不讲解Web和远程调试,程序错误类型,生成错误由编译系统来检查:将警告的级别提高到最高级;启动代码分析工具怎样看各种连接错误逻辑错误程序流程中地错误,需要调试人员对程序的执行逻辑有清楚的认识结合调试工具定位错误的位置和原因,程序的生成配置,解决方案和项目配置,解决方案配置项目之间的依赖关系;启动项目可以执行多个项目调试进行配置管理项目配置确定各个项目的内部生成属性系统默认情况下生成“调试”配置和“发布”配置。自动配置“调试”配置以便调试应用程序,配置“发布”配置以便用于应用程序的最终发布配置管理器的使用,配置管理器使用,程序调试,调试设置程序中的应用启动调试的方法第三方程序应用程序DLL调试执行及相关控制,调试器设置,启动调试设置界面,理解各个选项的含义“工具”-“选项”对话框-“调试”文件夹-选择所需选项的类别,C+调试配置的项目设置,C+调试配置的项目设置,C+调试配置的项目设置,C+调试配置的项目设置,在VisualC+中启用调试功能,在VisualC+中启用调试,如果在编译程序时定义了_DEBUG符号,则将启用某些调试功能(如断言)。可以用下列两种方法之一定义_DEBUG在源代码中指定#define_DEBUG,指定/D_DEBUG编译器选项。(如果是在VisualStudio中使用向导创建项目,则/D_DEBUG将在“调试”配置中自动定义。)在定义了_DEBUG后,编译器将编译包围在#ifdef_DEBUG和#endif内的代码段,程序数据库(PDB)文件,作用保存着调试和项目状态信息指定符号路径“工具”菜单-“选项”对话框-“调试”节点-“符号”类别:“符号文件(.pdb)位置”手动加载符号从“模块”窗口中手动加载DBG文件,启动调试的方法,启动调试的方法,不属于解决方案的可执行文件,在VisualStudio外部启动可执行文件并使用VisualStudio调试器附加到该文件需要手动执行一些步骤,不能调试启动过程中发生的问题,不能调试不等待用户输入而迅速完成的程序为此类程序创建EXE项目,属于解决方案的调试,EXEDLL控制台,调试的启动,调试的启动,调试命令,启动,逐语句,逐过程调试多进程停止调试或停止执行调试中断达到断点;发生异常;手工中断更改调试多个程序时的中断行为工具”-“选项”-“调试”-“常规”-“一个进程中断时则中断所有进程”,单步执行,逐语句逐过程跳出单步执行特定函数运行到指定位置设置断点运行到光标位置运行到指定函数查找函数设断点在“调用堆栈”窗口中,右击该函数名,并从快捷菜单中选择“运行到光标处”。,调试断点,断点,简单断点“调试”-”切换断点”源代码行的最左边空白鼠标左键单击指定源代码行的右键菜单地址断点“反汇编”窗口中采用上面的方法设置函数断点删除、启用、禁用断点删除、启用、禁用所有断点,断点,编辑断点位置指定断点筛选器指定命中次数指定断点条件指定跟踪点/断点操作,调试器中的数据查看,使用数据提示功能可视化工具变量窗口快速监视对话框寄存器窗口内存窗口调用堆栈窗口反汇编窗口模块窗口,调试器中的表达式,VisualStudio调试器包括表达式计算器,当您在“快速监视”对话框、“监视”窗口或“即时”窗口中输入表达式时,这些计算器可以对其进行计算。这些表达式计算器还可以在“断点”窗口和调试器中的许多其他位置使用,异常处理(调试),调试器识别下列类别的异常:C+异常公共语言运行时异常托管调试助手本机运行时检查Win32异常,异常处理(调试),在引发异常时中断的方法异常中断的管理,本机代码程序,调试优化的代码使用_debugbreak函数使用断言内存泄漏的检测和隔离,断言,通过在代码中大量使用断言,可以在开发期间捕捉许多错误。为所做的每个假定编写一个断言是很好的规则。例如,如果假定某个参数不为NULL,请使用一条断言语句检查该假定,CRT断言,_ASSERT,_ASSERTE使用断言一般不需要使用printf检查堆是否损坏_ASSERTE(_CrtCheckMemory();检查指针有效性_ASSERTE(_CrtIsValidPointer(address,size,TRUE);_ASSERTE(_CrtIsValidPointer(myData);检查内存块_ASSERTE(_CrtIsMemoryBlock(myData,size,MFC断言,ASSERT,VERIFY(注意ASSERT的副作用)ASSERT(pObject1-IsKindOf(RUNTIME_CLASS(CPerson);CObject:AssertValidASSERT_VALID(m_pDataList);可以使用断言来捕捉逻辑错误,进行结果检查,测试错误条件,内存泄漏的检测和隔离,CRT启用内存泄漏检测,#define_CRTDBG_MAP_ALLOC#include#include,将malloc和free函数映射到其“Debug”版本_malloc_dbg和_free_dbg,程序结束时调用_CrtDumpMemoryLeaks();,或程序开始时调用_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);,MFC内存泄漏检测,#definenewDEBUG_NEWAfxEnableMemoryTrackingafxMemDF,MFC调试,AfxDebugBreakTRACE宏Err,hr0 x80000004,hr,程序设计中的建议,编写必要的注释尽可能正确使用ASSERT()对输入不信任,对输出保证其正确性代码命名的规范,程序设计中的建议,编写必要的注释,程序设计中的建议,BOOLCGlobalSetting_EE:WriteProfileStringEx(LPCTSTRpszElement,LPCTSTRpszKeyAttr,LPCTSTRpszKeyAttrValue,LPCTSTRpszWriteAttrName,LPCTSTRpszWriteAttrValue)if(NULL=m_pXMLConfig)returnFALSE;ASSERT(AfxIsValidString(pszElement);ASSERT(AfxIsValidString(pszKeyAttr);ASSERT(AfxIsValidString(pszKeyAttrValue);if(!pszElement|!pszKeyAttr|!pszKeyAttrValue)returnFALSE;/.,对输入不信任,对输出保证其正确性尽可能正确使用ASSERT(),程序设计中的建议,尽量用const和inline而不用#define,#definemax(a,b)(a)(b)?(a):(b),inta=5,b=0;max(+a,b);/a的值增加了2次max(+a,b+10);/a的值只增加了1次,inlineintmax(inta,intb)returnab?a:b;,templateinlineconstT,程序设计中的建议,尽量用new和delete而不用malloc和free,malloc和free(及其变体)会产生问题的原因在于它们太简单:他们不知道构造函数和析构函数,程序设计中的建议,对应的new和delete要采用相同的形式指针初始化为NULL,delete之后设置为NULL,string*stringptr1=newstring;string*stringptr2=newstring100;.deletestringptr1;/删除一个对象Stringptr1=NULL;deletestringptr2;/删除对象数组Stringptr2=NULL;,程序设计中的建议,在operator=中检查给自己赋值的情况,c.,程序设计中的建议,尽可能使用const,char*p=hello;/非const指针,/非const数据constchar*p=hello;/非const指针,/const数据char*constp=hello;/const指针,/非const数据constch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中科学探究:科学探究与TiO₂石墨烯光催化技术实验的结合教学论文
- 绘本教学在小学英语课堂中的创新与挑战研究论文
- 智能家居节能技术在智能家居产品中的市场竞争力分析论文
- 艺术班培训管理制度
- 芽苗菜栽培管理制度
- 茶叶类门店管理制度
- 除雪剂使用管理制度
- 访问控制策略安全评估
- 财务会计建筑业会计科目
- 大班幼儿散文诗四季的礼物
- 2024年大学生就业力调研报告-智联招聘-202405
- 防静电地胶板施工工艺及技术方案、措施
- 缝纫车间安全培训课件
- 成人ICU患者外周动脉导管管理专家共识解读
- 电力设备预防性试验及维护合同
- 2025年各地低空经济政策汇编
- 搬运重物安全培训
- 2025年共青团入团考试测试题库及答案
- 磷酸铁及磷酸铁锂异物防控管理
- 《宫颈癌防治知识普及》课件
- 施工单位关于工作安排的联络函
评论
0/150
提交评论