AfxDebugBreak MFC 提供特殊的 AfxDebugBreak 函数,以供在源代码中对断点进行硬编码: AfxDebugBreak( ); 在 Intel 平台上,AfxDebugBreak 将生成以下代码,它在源代码而不是内核代码中中断: _asm int 3 在其他平台上,AfxDe ...
分类:
编程语言 时间:
2016-04-03 18:52:46
阅读次数:
327
第十八章 调试 18.1 准备开始 1、在用户级的程序里,bug表现比较直接;在内核中却不清晰。 2、内核级开发的调试工作远比用户级开发艰难的多。 3、准备工作需要的是: (1)一个bug (2)一个藏匿bug的内核版本 (3)相关内核代码的知识和运气 18.2 内核中的bug 1、内核中的bug多 ...
分类:
系统相关 时间:
2016-04-02 17:38:53
阅读次数:
304
经过实验3的介绍,我们需要来点实在的,所以将我们理解的流程用于linux系统的分析。换句话说,通过类比的方式去进行描述与理解linux相关的部分。本节的内容很详实,而且也分析了很久,所以长话短说,静静的去感受与理解linux内核代码的实现。当然,我们实验的系统代码很简单而且直接,但是linux内核经过20多年的发展,更有成千上万的开发者共同维护,所以对于代码的书写会更加精练,对于基...
分类:
系统相关 时间:
2016-04-01 18:45:54
阅读次数:
214
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究。这当中就包括系统的启动流程、文件系统的组成结构、基于动态库和静态库的程序在执行时的异同、协议栈的架构和原理、驱动程序的机制等等。
本人在综合了现有网上大家智慧的基础上,结合对2.6.32的内核代码的研读,基于CentOS 6.0系统对Linux的启动流程做了些分析。由于才疏学浅,知识所限,有些地方...
分类:
系统相关 时间:
2016-04-01 18:27:29
阅读次数:
222
转自:http://www.cnblogs.com/hoys/archive/2012/06/28/2567622.html 转自:http://blog.chinaunix.net/u1/49093/showart_1910189.html 这个问题有很多人问过,我看了下Linux得内核代码,原因 ...
分类:
其他好文 时间:
2016-04-01 10:16:55
阅读次数:
139
调 试 一、准备开始 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 知道这个bug最早出现在哪个内核版本中。 1、想要成功进行调试: 让这些错误重现 抽象出问题 从代码中搜索 二、 ...
分类:
系统相关 时间:
2016-03-30 12:29:49
阅读次数:
158
一、准备开始 1、一个确定的bug,但大部分bug通常都不是行为可靠且定义明确的。 2、一个藏匿bug的内核版本。 3、相关内核代码的知识和运气。 二、内核中的bug 1、bug的表象: 明白无误的错误代码,同步时发生的错误,错误地管理硬件,降低所有程序的运行性能,毁坏数据,使系统处于死锁状态。 2 ...
分类:
系统相关 时间:
2016-03-29 21:27:42
阅读次数:
298
第18章 调试 18.1 准备开始 准备工作需要的是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 18.2 内核中的bug 内核中bug的产生原因 从明白无误的错误代码——没有把正确的值存放在恰当的位置 同步时发生的错误——共享变量锁定不当 错误地管理硬件——错误的控制寄存器发 ...
分类:
系统相关 时间:
2016-03-29 00:51:48
阅读次数:
297
1. 操作系统模型
大多数操作系统中,都会把应用程序和内核代码分离运行在不同的模式下。内核模式访问系统数据和硬件,应用程序运行在没有特权的模式下(用户模式),只能使用有限的API,且不能直接访问硬件。当用户模式调用系统服务时,CPU执行一个特殊的指令以切换到内核模式(Ring0),当系统服务调用完成时,操作系统切换回用户模式(Ring3)。
Windows与大多数UNIX系统类似,驱动程...
第十八章调试 18.1 准备开始 需要准备的东西: l 一个bug:大部分bug通常都不是行为可靠而且定义明确的 l 一个藏匿bug的内核版本:找出bug首先出现的版本 l 相关内核代码的知识和运气 最好能让bug重现,有一些bug存在而且有人没办法让他重现,因为内核与用户程序和硬件间的交互很微妙。 ...
分类:
系统相关 时间:
2016-03-27 18:09:30
阅读次数:
229