《软件调试》

2015-09-13  本文已影响328人  带三本书

这里有两个信息需要注意:
1.函数调用的栈式结构是有着非常底层的硬件支持的,如CPU就直接提供了支持。
2.这段话表明了得到当前函数的调用路径技术,也就是通过递归方式查找栈上函数的返回地址。

需要注意两点:
1.这段话表明了反汇编在软件调试中的一个重要作用,即对高级语言的执行结果不理解的时候可以通过看汇编代码的方式了解缘由。
2.CPU底层提供了DIV和IDIV两个指令,如今脚本动态语言比较热门,一个var关键字就可以描述一切变量,似乎不用关心变量的具体类型了,但是在CPU的底层还是有类型的区别,而且用法涉及到结果的正误。

WinDBG好厉害。

讲得很好,能说出这样话的人是真正懂软件这个行业规律的,是内行。可惜的是,据我所知国内有非常知名的IT公司都不懂这个道理,很可悲。

这段话表明了调试与逆向工程的关系,逆向工程利用了调试技术。

这段话讲解的十分清楚明白,对第二章有提纲挈领的效果。

CPU有两个内存管理机制:段机制和页机制,首先由80386所支持。

这段话说明了保护模式的主要作用以及多任务环境所面临的主要问题。

时间一长就忘记基本的概念了,比如内核模式、用户模式,这段话讲解的非常清楚,一下子就明白了。

中断和异常的比较是计算机中比较重要的概念,这本书专门用了一章的篇幅讲解这两个概念。

读到这里,我发现原来调试是一项多么基本的计算机功能,而且这项功能贯穿计算机的各个层次。最底层的CPU,以及上层的操作系统、应用软件,无不提供对调试的支持。那么很自然,我会很好奇操作系统是怎么支持调试的。

这是windows的一段历史,以前我还真不知道。

这段话印证了我以前的一个猜测。

竟然每个进程空间都有操作系统内核数据和代码的映射,竟然是这样一种结构。以前读这些知识,并没有注意到“每个”,这次注意到了,感到神奇,还有那个2GB的映射,也很神奇。

注意是所有

Windows针对软件异常的编写和编译是有专门规范的,这点值得注意。

上一篇下一篇

猜你喜欢

热点阅读