C++软件异常分析与排查的学习历程

Posted IT老张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++软件异常分析与排查的学习历程相关的知识,希望对你有一定的参考价值。

 1、汇编与反汇编

(1)汇编
       学习普通x86下汇编语言的设计,尤其是用汇编语言编写面向对象的程序,汇编语言编写win32程序,旨在通过编程的思路了解C++的核心原理。书籍推荐罗云彬《windows环境下32位汇编语言程序设计》

(2)反汇编
       因为我们的代码是直接编译成机器语言的,当我们的程序出现了bug,我们调试的时候所看到的汇编码实际上是根据机器语言反汇编的,和汇编有点出入,但是不大,此项学习同上面的汇编相辅相成。书籍推荐看雪论坛出的《c++反汇编与逆向分析技术揭秘》。另外我们还要学习基本的反汇编工具的使用,比如windbg和IDA。

2、工具的使用

(1)windbg
       动态调试工具,不用说了,这是主要的调试工具,主要是通过其帮助文档来学习,前期学习其命令,基本的使用等。这个是重点要掌握的东西,难点在于知识零散,而且不系统。

(2)IDA
       这个是一款强大的静态反汇编工具,如果我们没有pdb,map,我们只有源程序和二进制文件,那么就只能使用IDA来反汇编了,其工具的使用学习是一项,书籍推荐《IDA pro 权威指南》,当然内功的修炼要通过反汇编的学习,实际上是阅读反汇编程序。

(3)其他辅助性工具

        辅助性工具包括SPY++、DependencyWalkers、GDIView、Process Explorer、ProcessHacker、Process Monitor、API Monitor等。

3、提升调试能力的书籍推荐

(1)张银奎《软件调试》,重中之重,这个是仅有的国内的软件调试方面的系统性书籍,比较重视windows调试系统的原理,当发生疑难杂症的时候其很有用,另外也是crashreport项目的开发与维护的指导书籍。

(2)《inside windows debugging》《windows高级调试》,这两本可以简略的看看,理论上并没有《软件调试》丰富,比较实践性。

(3)《memory dump analysis anthology》和张银奎《格蠹汇编》从实践的windbg使用来解决实际问题的解决方案集锦。

以上是关于C++软件异常分析与排查的学习历程的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 学习进阶历程之Tomcat架构与核心类分析

一个由C++到Java,再到Hadoop的学习历程

《软件工程》学习历程1

Liam的软件测试学习历程:查找错误的两道例题

微服务架构学习与思考(12):从单体架构到微服务架构的演进历程

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