C++软件调试与异常排查从入门到精通系列汇总

前言

专栏介绍:根据近几年C++软件异常排查的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,详细讲述了C++软件的调试方法与手段,以图文并茂的方式给出具体的问题分析实例,带领大家逐步掌握软件调试与异常排查的相关技术,适合基础进阶和想做技术提升的相关C++开发人员!

专栏适用人群:C++软件开发人员。

在做技术分享与内部交流时,从刚毕业的C++新手到工作七八年及以上的老程序员,反应都比较强烈,都表示很有价值!
通过沟通交流及对身边同事的观察发现,很多C++开发人员在软件调试及异常排查方面都比较欠缺,甚至有时会直接影响工作效率和项目进度!所以决定推出这方面成体系的技术专栏,希望能有效地解决大家的痛点问题!


专栏文章还在持续更新 ing…
 
如果文章对您有用,请点点赞,点点关注,点点收藏,也可以订阅专栏,您的支持是我前进的最大动力!Thanks!


文章列表


专栏文章分以下几个部分来展开:
概述篇:系统地总结了引发C++软件异常的常见原因,并给出了排查异常问题的常用方法。然后详细讲述了排查C++软件异常所需要掌握的汇编语言基础知识。根据多年的开发调试经验,分享了一些Visual Studio高效的调试手段与技巧。
常用工具篇:详细地介绍了SPY++、Dependency Walker、GDIView、Process Explorer、Prcoess Monitor、API Monitor、Windbg和IDA等常用软件分析工具的使用,并给出详细的工具分析实例。
异常分析基础知识篇:详细讲解了C++程序的五大内存分区、C++函数调用调用的栈分布、函数调用堆栈的栈回溯原理、C++虚函数调用的汇编代码解读、函数调用约定等与异常排查相关的基础内容。
调试器Windbg使用篇:介绍了Windbg调试器及其常用命令,并详细讲解了如何使用Windbg去静态分析dump文件、如何使用Windbg进行动态调试。
程序启动异常分析篇:以实际项目中遇到的问题实例,详细讲述C++程序启动异常时的分析方法。
异常分析实例篇:以实际项目中遇到的C++软件异常实例为主线,详细讲述这些C++软件异常实例的完整分析与解决过程。


Part1 概述


第1章:C++软件异常分析概述

第2章:C++软件异常的常见原因分析与总结

第3章:排查C++软件异常的常见思路与方法

第4章:分析C++软件异常需要掌握的汇编知识汇总

第5章:Visual Studio高效调试手段与技巧总结

第6章:Visual Studio调试方式详解

第7章:Windows和Linux下排查C++软件异常的常用调试器与内存检测工具详细介绍

第8章:内存越界一定会导致程序崩溃吗解内存越界


Part2 常用分析工具篇


第9章:Windows开发值得推荐的十大软件分析工具

第10章:Windbg调试工具使用详解(分析工具)

第11章:IDA反汇编工具使用详解(分析工具)

第12章:使用GDIView工具排查GDI对象泄漏问题(分析工具)

第13章:使用Dependency Walker和dumpbin工具定位C++软件启动时找不到接口的 错问题(分析工具)

第14章:使用API Monitor监测到目标程序对系统API函数的调用(分析工具)

第15章:使用Process Monitor工具监测进程对注册表和文件的操作(分析工具)

第16章:使用Dependency Walker和Process Explorer排查软件release版本发布问题(常用工具)

第17章:使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题(常用分析工具)


Part3 异常分析基础知识篇


第18章:实例详解C++程序的五大内存分区

第19章:C++函数调用栈分布详解

第20章:C++栈回溯原理

第21章:几秒读懂C++虚函数调用的汇编代码实现

第22章:C/C++函数的调用约定详解


Part4 Windbg使用篇


第23章:Windbg调试工具介绍

第24章:Windbg常用命令详解

第25章:Windbg调试命令汇总

第26章:pdb符 库文件详解

第27章:dump文件类型与dump文件生成方法详解

第28章:使用Windbg去静态分析dump文件的完整过程介绍

第29章:通过Windbg动态调试去捕获C++软件异常的完整过程介绍


Part5 程序启动异常分析篇


第30章:C++程序安装包被病毒篡改导致启动 错

第31章:C++程序启动时 “0xc0000022”无法启动的错误

第32章:C++程序启动时 “R6030 CRT not initialized”错误

第33章:C++程序启动时 “0xC000007B”无法启动的问题排查


Part6 异常实例分析篇


第34章:使用Clumsy和Process Explorer定位软件高CPU占用问题

功能介绍:使用弱 模拟工具Clumsy和进程查看工具Process Explorer定位软件高CPU占用问题。

第35章:使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题

功能介绍:使用进程查看工具Process Explorer和依赖关系查看器Dependency Walker定位dll库动态启动失败的问题。

第36章:使用Windbg定位Windows C++程序中的内存泄露

第37章:排查软件启动时访问了0xcdcdcdcd内存地址导致内存访问违例的崩溃

功能介绍:详细介绍软件启动时访问了0xcdcdcdcd内存地址,导致内存访问违例的崩溃问题的排查过程。

第38章:排查软件关闭时访问了0xfeeefeee内存地址导致内存访问违例的崩溃

功能介绍:详细介绍软件关闭时访问了0xfeeefeee内存地址,导致内存访问违例崩溃问题的排查过程。

第39章:使用windbg分析dump文件,排查模态框返回时的崩溃问题

功能介绍:详细讲述使用windbg分析dump文件,排查模态框返回时的崩溃问题。

第40章:将Windbg附加到软件进程上排查异常闪退的实例分析

功能介绍:使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

第41章:C++程序运行过程中发生异常闪退,很有可能是这三个原因导致的

功能介绍:详细讲述三种引起C++程序运行过程中发生异常闪退常见原因。

第42章:使用Windbg和IDA分析给被调用函数的std::string类型参数传递了空指针引发的崩溃

功能介绍:使用Windbg和IDA分析给被调用函数的std::string类型参数传递了空指针引发的崩溃。

第43章:消息id重复引发的内存读取异常问题

第44章:巧用Visual Studio中的数据断点去排查C++内存越界问题

第45章:通过查看Windbg中的变量值去定位C++软件异常问题

第46章:通过查看windbg中变量值去定位C++软件异常的又一典型案例分享

第47章:从可变参数函数的调用引发异常崩溃一例引发的一些思考

功能介绍:从可变参数函数的调用引发异常崩溃一例引发的一些思考。

第48章:引发0xC0000005内存违例几种可能原因分析

功能介绍:引发0xC0000005内存违例几种可能原因分析。

第49章:使用Windbg过程中两个使用细节分享

第50章:使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题

功能介绍:使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题。

第51章:将string类对象中的内容格式化到字符串Buffer中时遇到的异常崩溃分析

第52章:使用Windbg排查线程死锁引起的连不上服务器问题

功能介绍:将Windbg附加到目标进程上,排查线程死锁引起的连不上服务器问题。

第53章:通过查看Windbg中汇编指令及内存中的值去定位软件崩溃问题

功能介绍:详细讲解了windbg分析dump文件的一般步骤,然后介绍了通过查看Windbg中汇编指令及内存中的值去定位软件崩溃的实例。

第54章:两例典型的C++软件异常排查实例分享

功能介绍:使用new申请动态内存时抛出bad_alloc异常,以及第三方软件输入法模块崩溃导致程序闪退,讲述这两类典型异常问题的排查过程。

第55章:0xcdcdcdcd异常值引发C++程序崩溃问题的详细分析

功能介绍:详细分析0xcdcdcdcd异常值引发C++程序崩溃实例,并对相关内容进行详细讲述。

第56章:Release库与Debug库混用导致释放堆内存时产生异常的详细分析

功能介绍:详细分析Release库与Debug库混用导致释放堆内存时产生的异常实例。


最后

C++软件异常排查从入门到精通系列教程专栏的文章都在这里啦。

文章会持续更新,大家有想要了解的功能点或者话题,可以在评论区告诉我!

喜欢本专栏的文章,可以点赞、订阅支持一下,你的肯定是对我最大的支持!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月27日
下一篇 2022年11月27日

相关推荐