🚀 前言
本文是专栏《C++软件调试与异常排查从入门到精通系列教程》的文章导航贴(点击左侧的链接,跳转到专栏主页,欢迎订阅,持续更新…)。
📢 建议在阅读本专栏文章时,使用本篇文章导航,本篇导航对专栏中的文章进行了归类与排序,读起来更方便、更有条理!
专栏介绍:本专栏根据近几年C++软件异常排查的项目实践,系统地总结了引发C++软件异常的常见原因以及排查C++软件异常的常用思路与方法,详细讲述了C++软件的调试方法与手段,以图文并茂的方式给出具体的实战问题分析实例,带领大家逐步掌握C++软件调试与异常排查的相关技术,适合基础进阶和想做技术提升的相关C++开发人员!
📢 本专栏以项目实战问题为主线,在项目实战经历与实战经验的基础上对C++软件调试相关的内容和知识点进行了大量的归纳与总结。专栏中给出了大量的项目实战问题分析实例(重点内容),详细讲述了这些问题的分析方法与过程,很有强的实战参考价值!
📢 掌握专栏中的调试方法与技能之后,能有效地分析排查工作中遇到的各种C++软件异常问题,能有效地提升分析问题与解决问题的效率!
📢 目前本专栏订阅量已达560多个,专栏的质量广受好评(从编程新手到工作七八年及以上的老程序员),专栏中分享了大量的实战问题分析案例(详细讲述问题的排查过程),很有实战参考价值!本专栏的文章还在持续更新中,预计会更新到200篇以上!
专栏适用人群:C++软件开发人员。
📢 在做技术分享与内部交流时,从刚毕业的C++新手到工作七八年及以上的老程序员,反应都比较强烈,都表示很有价值!
📢 通过沟通交流及对身边同事的观察发现,很多C++开发人员在软件调试及异常排查方面都比较欠缺,甚至有时会直接影响工作效率和项目进度!
📢 所以决定推出这方面成体系的技术专栏,希望能有效地解决大家的痛点问题!
专栏文章还在持续更新 ing…
如果文章有用,可以点赞、收藏、关注,也可以订阅专栏!
🌾 通过对项目实战问题中的技术点及相关细节进行思考、总结及整理,可以加深对关联知识点的认知和理解,可以做更进一步的归纳与提炼,将相关的技术点高效串联起来,最后形成一套属于自己的系统完整的知识体系,这样也可以更好地服务于工作实践!多多关注细节,会有更深刻的理解和认识!
📢 当前专栏主要讲解C++软件调试相关内容,关于C/C++基础与实战进阶的内容,则可以查看对应的专栏:⭐️ C/C++实战专栏(点击左侧的链接,跳转到专栏主页,欢迎订阅,持续更新中…)。
专栏介绍:以多年的开发实战为基础,总结并讲解一些的C/C++基础与项目实战进阶内容,以图文并茂的方式对相关知识点进行详细地展开与阐述!专栏涉及了C/C++领域多个方面的内容,包括C++基础及编程要点、数据结构与算法、C++11新特性(不仅看开源代码会用到,面试也会涉及到)、C++开源库介绍与使用、代码分享(调用系统API、使用开源库)、编程技术(动态库、多线程、多进程、数据库编程及网络编程等)、软件UI编程(Win32/duilib/QT)、C++软件调试技术(排查软件异常的手段与方法、常用软件分析工具使用、实战问题分析案例等)、设计模式、网络基础知识与进阶内容等。适合基础进阶和想做技术提升的C++开发人员!
《C/C++实战进阶》专栏是接下来要重点打造的技术专栏,目前专栏文章已经更新到500多篇,还在持续的更新中,订阅量已达300个,也欢迎订阅该专栏!
订阅链接:https://blog.csdn.net/chenlycly/category_11931267.html
🔰 文章列表
专栏文章分以下几个部分来展开:
📢 1、概述篇:系统地总结了引发C++软件异常的常见原因,并给出了排查异常问题的常用方法。然后详细讲述了排查C++软件异常所需要掌握的汇编语言基础知识。根据多年的开发调试经验,分享了一些Visual Studio高效的调试手段与技巧。
📢 2、常用工具篇:详细地介绍了SPY++、Dependency Walker、GDIView、Process Explorer、Prcoess Monitor、API Monitor、Windbg和IDA等常用软件分析工具的使用,并给出详细的工具分析实例。
📢 3、异常分析基础知识篇:详细讲解了C++程序的五大内存分区、C++函数调用调用的栈分布、函数调用堆栈的栈回溯原理、C++虚函数调用的汇编代码解读、函数调用约定等与异常排查相关的基础内容。
📢 4、调试器Windbg使用篇:介绍了Windbg调试器及其常用命令,并详细讲解了如何使用Windbg去静态分析dump文件、如何使用Windbg进行动态调试。
📢 5、程序启动异常分析篇:以实际项目中遇到的问题实例,详细讲述C++程序启动异常时的分析方法。
📢 6、访问异常内存地址篇:访问0xcccccccc、0xcdcdcdcd、0xfeeefeee和0xdddddddd等常见异常内存地址引发的问题实例分析。
📢 7、异常分析实例篇(项目问题分析实战):以实际项目中遇到的C++软件异常问题实例为主线,详细讲述这些C++软件异常问题实例的完整分析与解决过程。
📚Part1 概述篇
⭐️第1篇:为什么要学习C++软件调试技术?掌握调试技术都有哪些好处?
功能介绍:本文系统地讲述了为什么要学习C++软件调试技术以及掌握这类技术都有哪些好处。
⭐️第2篇:C++软件调试与异常排查技术从入门到精通学习路线
功能介绍:本文详细讲述C++软件调试与异常排查技术从入门到精通的学习路线。
功能介绍:本文概要性地讲述了C++软件异常的分类以及常用的排查方法。
⭐️第4篇:引发C++软件异常的常见原因分析与总结(实战经验总结)
功能介绍:本文根据近几年排查C++软件异常的实践经历与实战经验,系统地总结出引发C++软件异常的常见原因,给大家提供借鉴或参考。
⭐️第5篇:排查C++软件异常的常见思路与方法(实战经验总结)
功能介绍:本文系统地讲述了排查C++软件异常的常用思路与方法。
功能介绍:本文详细地讲述了排查C++软件异常时所要了解及掌握的一些汇编方面的基本知识与要点。
⭐️第7篇:C/C++程序员为什么要了解汇编?了解汇编有哪些好处?如何学习汇编?
功能介绍:本文详细讲解了C++程序员为什么要了解汇编,了解汇编都有哪些具体的好处,如何学习汇编,以及如何看懂汇编代码上下文、如何通过查看汇编代码上下文去辅助排查C++软件异常问题等,给大家提供一定的借鉴或参考。
⭐️第8篇:Visual Studio高效调试手段与技巧总结(实战经验总结)
功能介绍:本文根据多年的Visual Studio使用经验,带着大家逐一认识并掌握Visual Studio多种实用的调试方法和技巧,以帮助大家去高效、快速地解决开发过程中遇到的多种问题。
⭐️第9篇:Visual Studio调试方式详解(Debug调试、Release调试与附加到进程调试)
功能介绍:本文详细讲述了Visual Studio 3种常用的调试方式:Debug下调试、Release下调试及附加调试。
⭐️第10篇:Windows和Linux下排查C++软件异常的常用调试器与内存检测工具详细介绍
功能介绍:本文详细讲述Windows和Linux两平台下排查C++软件异常的常用调试器与内存检测工具。
⭐️第11篇:C++软件开发维护过程中典型软件异常问题的排查与总结(实战经验总结)
功能介绍:本文以问答的方式进行展开,罗列了C++软件日常开发和维护中遇到的多个软件异常问题及有代表性的场景,给出详细的处置思路和处理办法,以供大家借鉴和参考。
功能介绍:本文深入探究C++编程中GDI对象泄漏、句柄泄漏和内存泄漏问题,以及这些泄漏问题的排查方法。
⭐️第13篇:引发C++程序内存泄漏的常见原因分析与排查方法总结
功能介绍:本文根据多年的项目实践以及遇到的多个内存泄漏的问题案例及场景,详细介绍引发内存泄漏的原因以及排查方法。
⭐️第14篇:使用 STL 容器发生异常的常见原因分析与总结
功能介绍:本文根据项目中遇到的多个问题场景,详细总结一下使用 STL 容器发生异常的常见原因与场景。
⭐️第15篇:C++程序卡死、UI界面卡顿问题的原因分析与总结
功能介绍:C++程序卡死、客户都软件的UI界面卡顿问题的原因分析与总结。
功能介绍:本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。
功能介绍:本文全面总结了引发C++程序内存错误的常见原因。
⭐️第18篇:《Windows核心编程》若干知识点实战应用分享
功能介绍:《Windows核心编程》若干知识点应用实践分享,希望大家能够仔细研读,在提升理论知识水平的同时,也能有效地提高分析解决问题的技能。
⭐️第19篇:从C++软件调试实战的角度去看多线程编程中的若干细节问题
功能介绍:本文从C++软件调试实战的角度去讲述多线程编程中的若干细节问题,并给出了具体的问题分析实例。
⭐️第20篇:C/C++程序员为什么要了解汇编?了解汇编有哪些好处?如何学习汇编?
功能介绍:本文详细讲解了C++程序员为什么要了解汇编,了解汇编都有哪些具体的好处,如何学习汇编,以及如何看懂汇编代码上下文等,希望能给大家提供一定的借鉴或参考。
⭐️第21篇:根据问题现象、用户操作场景及日志打印去排查C++软件问题,必要时尝试去复现问题
功能介绍:本文详细讲述了通过问题现象、用户操作场景及日志打印去排查C++软件问题的细节,必要时尝试去复现问题,并对相关问题场景及问题实例进行了展开和讲解。
📚Part2 常用分析工具篇
⭐️第22篇:为什么要学习使用C++软件常用分析工具?学会这些工具都有哪些好处?
功能介绍:本文详细讲述为什么要学习C++软件分析工具的使用,以及学会这些工具的使用都有哪些好处。
功能介绍:本文详细讲述在Windows C++软件的日常开发和维护的过程中用到的一些常用工具,以辅助分析和解决我们遇到的多种软件异常问题。
⭐️第24篇:C++ 软件常用分析工具及项目实战问题分析案例集锦
功能介绍:本文详细介绍分析C++软件问题的分析工具,以及使用这些工具分析问题的案例集锦。
功能介绍:本文详细介绍Windows调试工具Windbg的使用。
功能介绍:本文详细介绍反汇编工具IDA Pro的使用。
⭐️第27篇:使用GDIView工具排查GDI对象泄漏问题(分析工具)
功能介绍:本文结合实际项目中的问题实例,讲解如何使用GDIView工具排查GDI对象泄漏问题。
⭐️第28篇:使用Dependency Walker和dumpbin工具定位C++软件启动时找不到接口的报错问题(分析工具)
功能介绍:本文详细介绍如何使用Dependency Walker和dumpbin工具定位C++软件启动时找不到接口的报错问题。
⭐️第29篇:使用API Monitor监测到目标程序对系统API函数的调用(分析工具)
功能介绍:本文通过一个具体的问题实例讲述如何使用API Monitor工具。
⭐️第30篇:使用Process Monitor工具监测进程对注册表和文件的操作(分析工具)
功能介绍:本文详细介绍如何使用Process Monitor工具监测进程对注册表和文件的操作活动,并给出了对应的监测范例。
⭐️第31篇:使用Dependency Walker和Process Explorer排查软件release版本发布问题(常用工具)
功能介绍:本文详细介绍使用Dependency Walker和Process Explorer排查软件release版本发布问题。
⭐️第32篇:使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题(常用分析工具)
功能介绍:本文详细介绍使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题。
⭐️第33篇:使用反汇编工具IDA查看发生异常的汇编代码的上下文去辅助分析C++软件异常
功能介绍:本文详细介绍如何使用反汇编工具IDA查看发生异常的汇编代码的上下文去辅助分析C++软件异常。
⭐️第34篇:使用SPY++查看窗口信息去排查客户端UI软件问题
功能介绍:本文详细讲述如何使用SPY++查看窗口信息去排查客户端UI软件问题占用问题。
⭐️第35篇:使用Process Explorer查看线程的函数调用堆栈去排查程序高CPU占用问题
功能介绍:本文详细讲述如何使用Process Explorer查看线程的函数调用堆栈去排查程序高CPU占用问题。
⭐️第36篇:使用Dependency Walker和Process Explorer排查程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误
功能介绍:本文详细讲述使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误的完整过程,以及发布软件版本时C/C++运行时库及系统通用时库部署问题。
⭐️第37篇:使用API Monitor工具巧妙探测C++程序中监听某端口的模块
功能介绍:本文详细讲述如何使用API Monitor工具巧妙探测C++程序中监听某端口的模块。
⭐️第38篇:使用Process Monitor工具探测日志文件是程序哪个模块生成的
功能介绍:本文详细讲述如何使用Process Monitor工具探测日志文件是程序哪个模块生成的。
⭐️第39篇:在Windbg中设置断点追踪打开软件远程调试开关的模块
功能介绍:本文详细讲述如何在Windbg中设置断点追踪打开软件远程调试开关的模块。
⭐️第40篇:使用API Monitor探测C++程序在调用HtmlHelp接口打开.chm文件时传入了哪些参数
功能介绍:本文详细讲述使用API Monitor探测C++程序在调用HtmlHelp接口打开.chm文件时传入了哪些参数。
⭐️第41篇:使用Process Explorer和Dependency Walker排查dll动态库没法调试的问题(dll库加载失败导致没法动态调试)
功能介绍:本文详细讲述如何使用Process Explorer和Dependency Walker排查dll动态库没法调试的问题(dll库加载失败导致没法调试)。
⭐️第42篇:使用PE信息查看工具和Beyond Compare文件比较工具排查dll文件版本不对的问题
功能介绍:本文详细讲述如何使用PE信息查看工具和Beyond Compare文件比较工具排查dll文件版本不对的问题。
⭐️第43篇:使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题
功能介绍:本文详细讲述如何使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题。
⭐️第44篇:使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题
功能介绍:本文详细讲述如何使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题。
⭐️第45篇:使用API Monitor探测QQ安装包在创建桌面快捷方式时都调用了哪些API及COM接口,去解决C++程序安装包中的问题
功能介绍:本文详细讲述如何使用API Monitor探测QQ安装包在创建桌面快捷方式时都调用了哪些API及COM接口去解决C++程序安装包中的问题,其中讲到了API Monitor工具的诸多使用细节!
📚Part3 异常分析基础知识篇
功能介绍:本文详细讲述C++程序在运行时的5大内存分区。
功能介绍:本文详细讲述C++函数调用时的栈分布情况。
功能介绍:本文详细讲述C++函数调用堆栈的回溯原理。
功能介绍:本文详细讲述C++虚函数调用过程的汇编代码实现,以帮助大家了解虚函数调用的实现机制。
功能介绍:本文详细讲述C/C++函数调用约定相关的内容。
📚Part4 Windbg使用篇
功能介绍:本文详细介绍一下Windbg的相关内容。
功能介绍:本文详细介绍一下Windbg的常用命令。
功能介绍:本文详细罗列了Windbg中大部分指令,方便大家在使用时查阅。
功能介绍:本文详细讲述了pdb符号库文件相关的内容。
功能介绍:本文详细讲述哪些软件分析工具需要使用到pdb符号文件,以及如何使用pdb文件。
功能介绍:本文详细讲述了包含异常上下文的dump文件的相关内容。
⭐️第57篇:使用Windbg静态分析dump文件一般步骤及要点详解
功能介绍:本文通过一个问题实例完整讲述了使用Windbg静态分析dump文件一般步骤及相关要点。
⭐️第50篇:使用Windbg动态调试目标进程的一般步骤及要点详解
功能介绍:本文通过一个问题实例完整讲述了使用Windbg动态调试目标进程的一般步骤及相关要点。
⭐️第58篇:何时使用Windbg静态分析?何时使用Windbg动态调试?
功能介绍:本文详细讲述何时使用Windbg静态分析,何时使用Windbg动态调试。
⭐️第59篇:使用 Windbg 分析软件异常时的诸多细节与技巧总结
功能介绍:本文结合项目实战经验,详细讲述了使用 Windbg 分析软件异常时的诸多细节与技巧总结,很有大的实战参考价值。
📚Part5 程序启动异常分析篇
功能介绍:本文讲述C++程序安装包被病毒篡改导致启动报错问题的排查过程。
⭐️第61篇:C++程序启动时报“0xc0000022”无法启动的错误
功能介绍:360安全卫士将dll库隔离后,导致C++程序启动时报“0xc0000022”无法启动的错误,本文将讲述整个问题的排查过程。
⭐️第62篇:C++程序启动时报“R6030 CRT not initialized”错误
功能介绍:SPY++工具注入到C++程序的进程中,导致程序启动时报“R6030 CRT not initialized”错误,本文将讲解该问题的排查过程。
⭐️第63篇:C++程序启动时报“0xC000007B”无法启动的问题排查
功能介绍:本文详细讲述C++程序启动时报“0xC000007B”错误的完整排查过程,并对相关的细节点进行了总结。
⭐️第64篇:使用Process Monitor排查因dll库被锁定导致C++程序启动报“0xc0000022”错误问题
功能介绍:本文详细讲述使用Process Monitor排查因dll库被锁定导致C++程序启动报“0xc0000022”错误问题的排查过程。
⭐️第65篇:使用Process Explorer和Dependency Walker排查C++程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误
功能介绍:本文详细讲述使用Process Explorer和Dependency Walker排查程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误问题的排查过程。
📚Part6 访问异常内存地址篇
⭐️第66篇:C++ 中常见异常内存地址的说明(0xcccccccc、0xcdcdcdcd、0xfeeefeee 和 0xdddddddd 等)
功能介绍:详细介绍C++程序中常见的异常内存地址0xcccccccc、0xcdcdcdcd、0xfeeefeee 和 0xdddddddd 等,访问这些内存地址会触发内存访问违例导致程序异常。
⭐️第67篇:排查软件启动时访问了0xcdcdcdcd内存地址导致内存访问违例的崩溃
功能介绍:详细介绍软件启动时访问了0xcdcdcdcd内存地址,导致内存访问违例的崩溃问题的排查过程。
⭐️第68篇:排查软件关闭时访问了0xfeeefeee内存地址导致内存访问违例的崩溃
功能介绍:详细讲述访问了0xfeeefeee内存地址引发的软件崩溃问题的完整排查过程。
⭐️第69篇:访问0xdddddddd内存地址引发软件崩溃的问题排查
功能介绍:详细介绍软件关闭时访问了0xdddddddd内存地址,导致内存访问违例崩溃问题的排查过程。
⭐️第70篇:访问0xcdcdcdcd内存地址引发软件崩溃的又一问题排查
功能介绍:详细分析0xcdcdcdcd异常值引发C++程序崩溃实例,并对相关内容进行详细讲述。
⭐️第71篇:引发0xc0000005内存违例的几种可能原因分析
功能介绍:引发0xC0000005内存违例几种可能原因分析。
📚Part7 异常实例分析实战篇(核心篇)
⭐️第72篇:巧用Visual Studio中的数据断点去排查C++内存越界问题
功能介绍:本文详细介绍如何使用Visual Studio中的数据断点去排查C++软件中的内存越界问题。
⭐️第73篇:将Windbg附加到软件进程上排查C++程序异常闪退的实例分析
功能介绍:使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。
⭐️第74篇:通过查看Windbg中的变量值去定位C++软件异常问题
功能介绍:本文详细讲述如何通过查看Windbg中的变量值去定位C++软件异常问题。
⭐️第75篇:通过查看Windbg中的变量值去定位C++软件异常的又一典型案例
功能介绍:本文详细讲述了通过查看Windbg中的变量值去定位C++软件异常问题的又一典型案例的完整排查过程。
⭐️第76篇:使用反汇编工具IDA查看动态库的汇编代码上下文,结合安卓系统生成的Tombstone文件,排查安卓app程序底层C++库崩溃问题
功能介绍:本文详细讲述使用反汇编工具IDA查看动态库中的汇编代码上下文,结合安卓系统自动生成的Tombstone文件,去分析安卓app程序底层C++模块的崩溃问题。
⭐️第77篇:使用开源库libyuv中的接口替换开源汇编接口,解决汇编接口中的崩溃问题
功能介绍:使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题。
⭐️第78篇:使用Windbg排查线程死锁引起的连不上服务器问题
功能介绍:将Windbg附加到目标进程上,排查线程死锁引起的连不上服务器的问题。
⭐️第79篇:通过查看Windbg中汇编指令及内存中的值去定位软件崩溃问题
功能介绍:详细讲解了Windbg分析dump文件的一般步骤,然后介绍了通过查看Windbg中汇编指令及内存中的值去定位软件崩溃的实例。
⭐️第80篇:多媒体库SDL以及实时音视频库WebRTC中的多线程问题实战排查与详解
功能介绍:本文详细讲述多媒体开源库SDL以及实时音视频开源库WebRTC因为多线程约定引发的程序运行异常问题的排查过程。
⭐️第81篇:开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查
功能介绍:本文详细讲述开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题的完整排查过程。
⭐️第82篇:播放WebRTC开源库回调出来的视频码流时遇到的内存越界问题排查
功能介绍:本文详细讲述播放WebRTC开源库回调出来的视频码流时遇到的内存越界问题的详细排查过程,并对问题中的重要细节进行了详细的展开与扩展。
⭐️第83篇:WebRTC开源库内部调用abort函数引发程序发生闪退问题的详细排查
功能介绍:本文讲述WebRTC开源库内部调用abort函数引发程序发生闪退问题的完整排查过程,详细讲解了引发abort函数调用的WebRTC相关功能模块中的多线程问题。
⭐️第84篇:基于WebRTC构建的程序因虚拟内存不足导致闪退问题的排查以及解决办法的探究
功能介绍:本文详细讲述基于WebRTC的程序因虚拟内存不足导致闪退问题的排查过程以及解决办法。
⭐️第85篇:线程栈溢出异常,程序崩溃在汇编代码test dword ptr [eax],eax上的问题排查
功能介绍:本文详细讲述因为线程栈溢出导致程序崩溃在校验函数栈有效性的汇编代码test dword ptr [eax],eax上问题的排查过程。
⭐️第86篇:使用Windbg分析从系统应用程序日志中找到的系统自动生成的dump文件去排查问题
功能介绍:本文详细讲述如何从系统应用程序日志中找到的系统自动生成的dump文件,然后使用Windbg打开dump文件进行静态分析去排查异常崩溃问题。
⭐️第87篇:使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误问题总结
功能介绍:本文详细讲述使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误的完整排查过程,并详细讲解了发布软件版本时C/C++运行时库及系统通用时库(the Universal CRT)的部署问题。
⭐️第88篇:使用Windbg定位Windows C++程序中的内存泄露
功能介绍:本文详细介绍如何使用Windbg定位Windows C++程序中的内存泄露。
⭐️第89篇:使用Windbg分析dump文件,排查模态框返回时的崩溃问题
功能介绍:详细讲述使用Windbg分析dump文件,排查模态框返回时的崩溃问题。
⭐️第90篇:使用Clumsy和Process Explorer定位软件高CPU占用问题
功能介绍:使用弱网模拟工具Clumsy和进程查看工具Process Explorer定位软件高CPU占用问题。
⭐️第91篇:使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题
功能介绍:使用进程查看工具Process Explorer和依赖关系查看器Dependency Walker定位dll库动态启动失败的问题。
⭐️第92篇:C++程序运行过程中发生异常闪退,很有可能是这三个原因导致的
功能介绍:详细讲述三种引起C++程序运行过程中发生异常闪退常见原因。
⭐️第93篇:使用Windbg和IDA分析给被调用函数的std::string类型参数传递了空指针引发的崩溃
功能介绍:使用Windbg和IDA分析给被调用函数的std::string类型参数传递了空指针引发的崩溃。
功能介绍:本文详细介绍了使用Windbg分析因为消息id重复引发的内存读取异常问题。
⭐️第95篇:从可变参数函数的调用引发异常崩溃问题排查及引发的一些思考
功能介绍:从可变参数函数的调用引发异常崩溃一例引发的一些思考。
功能介绍:本文给大家分享使用Windbg分析问题过程中的两个细节问题。
⭐️第97篇:将string类对象中的内容格式化到字符串buffer中时遇到的异常崩溃分析
功能介绍:本文讲述将string类对象中的内容格式化到字符串buffer中时遇到的异常崩溃问题分析。
功能介绍:使用new申请动态内存时抛出bad_alloc异常,以及第三方软件输入法模块崩溃导致程序闪退,讲述这两类典型异常问题的排查过程。
⭐️第99篇:Release库与Debug库混用导致释放堆内存时产生异常的详细分析
功能介绍:详细分析Release库与Debug库混用导致释放堆内存时产生的异常实例。
⭐️第100篇:使用Windbg分析多线程临界区死锁问题分享
功能介绍:分享使用Windbg分析多线程临界区死锁问题实例,详细讲述整个问题的排查过程。
⭐️第101篇:Windbg可以看到Visual Studio中看不到的有效函数调用堆栈
功能介绍:当Visual Studio中看不到有效的信息时,可以尝试使用Windbg去分析。
⭐️第102篇:C++程序中执行abort等操作导致没有生成dump文件的问题案例分析
功能介绍:本文详细讲述了调用abort函数强行终止进程导致没有生成dump文件的相关细节及处理办法。
⭐️第103篇:使用IDA查看汇编代码上下文去辅助排查C++软件异常问题
功能介绍:在部分场景下仅使用Windbg分析还不够,还需要使用IDA工具去查看发生异常的模块的汇编代码上下文,将C++源码与汇编代码结合着看,去找出引发问题的原因。
⭐️第104篇:将dumpbin从VS中抠出来,并使用dumpbin查看exe和dll库的依赖关系
功能介绍:从VS的安装路径中将dumpbin共扣出来,并使用dumpbin查看exe和dll库的依赖关系。
⭐️第105篇:C++程序调用IsBadReadPtr或IsBadWritePtr引发内存访问违例问题的排查
功能介绍:详细讲述C++程序调用IsBadReadPtr或IsBadWritePtr引发的0xC0000005内存访问违例的排查过程。
⭐️第106篇:C++堆内存错误:C运行时库检测到向堆内存头部写入了内容
功能介绍:本文讲述一个使用数组下标访问堆内存时下标异常导致越界到堆内存头部的问题。
⭐️第107篇:C++程序在Windows系统上启动失败与运行卡死问题排查实战
功能介绍:本文详细讲述C++程序在Windows系统上因为dll库版本不对引起的启动失败以及多线程死锁引发的程序卡死问题的排查过程。
⭐️第108篇:从业务层的代码出发,去排查通用框架代码崩溃的问题
功能介绍:本文以一个具体的问题实例,讲解如何去排查框架代码中的崩溃问题。
⭐️第109篇:使用Windbg动态调试排查软件启动不了的问题
功能介绍:本文详细讲述如何使用Windbg动态调试去分析程序启动不了的问题。
⭐️第110篇:使用Process Explorer查看线程的函数调用堆栈去排查程序高CPU占用问题
功能介绍:本文详细讲述如何使用Process Explorer查看线程的函数调用堆栈去排查程序高CPU占用问题。
⭐️第111篇:使用Windbg定位Windows C++程序中的内存泄漏
功能介绍:本文讲述如何使用Windbg中的umdh.exe去排查C++程序中的内存泄漏问题。
⭐️第112篇:查看开源操作系统ReactOS源码,解决dll库动态库加载失败问题(调用LoadLibrary加载失败)
功能介绍:本文讲述如何查看开源操作系统ReactOS源码,解决dll库动态库加载失败问题(调用LoadLibrary加载失败)。
功能介绍:本文详细讲述Windbg时遇到的几个典型细节问题,以供参考。
⭐️第114篇:使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题
功能介绍:本文详细讲述如何使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题。
⭐️第115篇:使用Visual Studio调试排查Windows系统程序audiodg.exe频繁弹出报错
功能介绍:本文讲述如何使用Visual Studio调试排查Windows系统程序audiodg.exe频繁弹出报错。
⭐️第116篇:为什么选择C/C++内存检测工具AddressSanitizer?如何使用AddressSanitizer?
功能介绍:本文详细介绍C/C++内存检测工具AddressSanitizer,以及如何使用AddressSanitizer工具。
⭐️第117篇:UINT64整型数据在格式化时使用了不匹配的格式化符%d导致其他参数无法打印的问题排查
功能介绍:本文详细讲述UINT64整型数据在格式化时使用了不匹配的格式化符%d导致其他参数无法打印的问题排查。
⭐️第118篇:使用Visual Leak Detector排查内存泄漏问题
功能介绍:本文详细讲述使用Visual Leak Detector排查内存泄漏的完整过程。
⭐️第119篇:Visual Leak Detector内存泄漏检测机制源码剖析
功能介绍:本文从源码的角度去剖析Visual Leak Detector内存泄漏检测机制。
⭐️第120篇:使用Process Explorer/Process Hacker和Windbg初步定位软件高CPU占用问题
功能介绍:本文详细讲述如何使用Process Explorer/Process Hacker和Windbg定位软件高CPU占用问题。
⭐️第121篇:使用Process Explorer/Process Hacker和Windbg高效排查软件高CPU占用问题
功能介绍:本文详细讲述使用Process Explorer/Process Hacker和Windbg高效排查软件高CPU占用问题,重点是通过在Windbg中查看变量的值去快速定位问题。
⭐️第122篇:字符编码转换时发生内存越界引发的摄像头切换失败问题的排查
功能介绍:本文详细讲述因为字符编码转换时发生内存越界引发的摄像头切换失败问题的排查过程。
⭐️第123篇:第三方模块远程注入到软件中引发软件异常的若干实战案例分享
功能介绍:本文详细讲述第三方模块远程注入到软件中引发软件异常的若干实战案例。
⭐️第124篇:Windows UAC权限详解以及因权限不对等引发的若干问题分享
功能介绍:本文详细讲述Windows UAC用户账户控制相关内容,分享因权限不对等引发的若干问题。
⭐️第125篇:软件崩溃时Visual Studio中看不到有效的调用堆栈,使用Windbg动态调试去分析定位
功能介绍:使用Visual Studio调试程序功能时程序发生崩溃,Visual Studio中看不到有效的函数调用堆栈,详细讲述使用Windbg动态调试去分析定位问题的全过程。
⭐️第126篇:程序启动时访问了未初始化的类指针引发内存访问违例导致程序崩溃的问题排查
功能介绍:本文详细讲述程序启动时访问了未初始化的类指针引发内存访问违例导致程序崩溃的问题排查。
⭐️第127篇:排查格式化符与待格式化参数不一致导致的程序崩溃问题
功能介绍:本文详细讲述排查格式化符与待格式化参数不一致导致的程序崩溃问题的完整过程,有一定的参考价值。
⭐️第128篇:使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享
功能介绍:本文详细讲述如何使用Process Explorer和Windbg排查软件线程堵塞问题,很有实战参考价值。
⭐️第129篇:Windows UAC权限详解以及因为权限不对等引发的若干问题分享
功能介绍:本文详细讲解Windows UAC权限,分享因权限不对等引发的若干问题。
⭐️第130篇:使用Windbg动态调试目标程序去分析异常的两实战案例分享
功能介绍:本文详细讲述使用Windbg动态调试目标程序两实战案例的分析过程。
⭐️第131篇:基于开源CrashRpt与微软开源Detours技术深度改造的异常捕获库分享
功能介绍:本文详细讲述异常捕获库的内容,并分享了基于开源CrashRpt与微软开源Detours技术深度改造的异常捕获库的实现。
⭐️第132篇:微软开源库Detours的实现机制和原理介绍
功能介绍:本文详细讲述微软开源库Detours的实现机制和原理。
⭐️第133篇:pdb文件名称被修改导致pdb文件加载失败的实战排查案例分享
功能介绍:本文详细讲述因为pdb文件名称被修改导致Windbg加载pdb失败问题的排查过程,以供借鉴或参考。
⭐️第134篇:访问0xdddddddd内存地址引发软件崩溃的实战问题排查
功能介绍:本文详细讲述访问了0xdddddddd内存地址引发的软件崩溃问题的完整排查过程。
⭐️第135篇:使用历史版本比对法排查C++程序中的内存泄漏问题
功能介绍:本文详细讲述如何使用历史版本比对法去排查C++程序中的内存泄漏问题,并对内存泄漏的相关细节点进行了展开。
⭐️第136篇:如何配置X86应用程序启用大地址模式(将用户态虚拟内存从2GB扩充到3GB),以解决用户态虚拟内存不够用问题?
功能介绍:本文结合一个项目问题实战实例,详细讲解问题排查的完整过程,并详细讨论了解决用户态虚拟内存不够用的手段与策略,最后讲述如何配置X86应用程序启用大地址模式(将用户态虚拟内存从2GB扩充到3GB)去解决内存不够用的问题。
⭐️第137篇:通过Stack Overflow线程栈溢出的问题实例,详解C++程序线程栈溢出的诸多细节
功能介绍:本文通过Stack Overflow线程栈溢出的问题实例,详细讲述C++程序线程栈溢出的诸多细节。
⭐️第138篇:使用GDIView工具排查GDI对象泄漏案例的若干细节总结
功能介绍:本文通过一个问题实例详细讲解使用GDIView工具排查GDI对象泄漏案例的若干细节。
⭐️第139篇:使用Process Monitor探测日志文件是C++程序哪个模块生成的
功能介绍:本文详细介绍如何使用使用Process Monitor探测日志文件是C++程序哪个模块生成的。
⭐️第140篇:使用API Monitor巧妙探测C++程序中监听2620端口的模块
功能介绍:本文详细介绍如何使用API Monitor巧妙探测C++程序中监听2620端口的模块。
⭐️第141篇:引发new/malloc动态申请内存失败的常见原因分析与总结
功能介绍:今天结合以往项目中遇到的多个问题实例,给大家详细总结一下引发动态申请内存失败的常见原因,以供借鉴或参考。
⭐️第142篇:什么是pdb文件?如何使用pdb文件?哪些工具需要使用pdb文件?
功能介绍:本文结合多年来排查C++软件异常的实践,详细介绍什么是pdb文件,哪些工具需要使用到pdb文件,以及如何去使用pdb文件,以供大家借鉴或参考。
⭐️第143篇:Windows UAC权限详解以及因为权限不对等引发软件工具无法正常使用的实例分析
功能介绍:Windows UAC权限详解以及因为权限不对等引发软件工具无法正常使用的实例分析。
⭐️第144篇:使用GDI对象绘制UI时需要注意的若干细节问题总结
功能介绍:本文结合多年的项目实践,给大家分享几个使用GDI对象的细节,以供大家借鉴或参考。
⭐️第145篇:C++程序发生闪退且没有生成dump文件问题的排查经验总结与分享
功能介绍:本文详细讲述了C++程序发生闪退且没有生成dump这类问题的场景及排查方法,并给出了相关实战问题分析实例,有一定的实战参考价值。
⭐️第146篇:dll动态库加载失败导致程序启动报错以及dll库加载失败的常见原因分析与总结
功能介绍:本文讲述dll动态库加载失败导致程序启动报错问题,以及dll库加载失败的常见原因分析与总结。
⭐️第147篇:动态库隐式与显式加载 | 为什么要动态加载动态库 | LoadLibrary加载失败 | 参考开源操作系统ReactOS源码 | 用LoadLibraryEx替代LoadLibrary
功能介绍:本文讲解C++动态库编程相关的内容,包括动态库隐式与显式加载、为什么要动态加载动态库、LoadLibrary加载失败、用LoadLibraryEx替代LoadLibrary、参考开源操作系统ReactOS源码等。
⭐️第148篇:【Stack around the variable ‘xxx‘ was corrupted】C++程序中被调函数中发生栈内存越界,越界到主调函数栈内存上,导致内存被篡改的典型案例分析
功能介绍:【Stack around the variable ‘xxx‘ was corrupted】被调函数中发生栈内存越界,越界到主调函数栈内存上,导致内存被篡改的典型案例分析分享。
⭐️第149篇:根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题
功能介绍:本文讲解一个实例,根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的原因,确定排查方向,快速定位问题。
⭐️第150篇:使用Windbg分析dump文件排查C++软件异常的一般步骤与要点分享
功能介绍:本文详细总结了使用Windbg静态分析dump文件去排查C++软件异常的一般步骤与方法,以及分析过程中涉及到的诸多细节,供大家借鉴或参考。
⭐️第151篇:使用Windbg排查C++软件安装包安装时被安全防护软件拦截导致安装线程堵塞卡住的问题
功能介绍:本文详细讲述C++软件安装包安装时被安全防护软件拦截导致安装线程堵塞卡住问题的排查过程,并详细介绍如何使用Windbg动态调试目标进程(在Windbg中查看变量的值、使用bp命令设置断点进行动态调试),给出“绕过”360安全卫士与金山毒霸拦截的有效办法,以供大家借鉴或参考!
⭐️第152篇:内存不足引发C++程序闪退崩溃问题的分析与总结
功能介绍:本文在多年项目实践的基础上,详细总结一下内存不足的相关问题场景以及内存不足引发程序异常的具体原因,供大家借鉴或参考。
⭐️第153篇:C/C++运行时库和UCRT系统通用运行时库总结及问题实例分享(程序打包时要带上这些运行时库)
功能介绍:本文详细介绍C/C++运行时库和UCRT系统通用运行时库,并分享了几个与运行时库有关的项目问题分析实例,供大家借鉴或参考。
⭐️第154篇:C++程序启动报错和启动失败的常见原因分析与排查经验总结
功能介绍:本文对引发C++程序启动报错或启动失败的常见原因及相关排查办法进行了详细地总结,并给出具体的项目问题实战分析实例。相关的总结及实战分析案例均来自于项目实战,有很强的实战参考价值。
📝 最后
《C++软件异常排查从入门到精通系列教程》专栏的文章都在这里啦(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)。
文章会持续更新,大家有想要了解的功能点或者话题,可以在评论区告诉我!
喜欢本专栏的文章,可以点赞、订阅支持一下,你的肯定是对我最大的支持!
也可以收藏本文章,收藏后可以快速查看本专栏后续更新的一系列文章!