软件调试 (第2版)•卷1•硬件基础
文章平均质量分 87
PDF笔记
S火星人S
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
软件调试基础(四【断点和单步执行】4.1)
bash# 1. 在WinDBG中设置软件断点bp 地址bp 函数名bp 模块名!函数名# 2. 设置带条件的断点bp 地址 "条件表达式"# 3. 设置一次性断点ba e1 地址 # 执行时中断一次。原创 2025-12-20 13:50:10 · 446 阅读 · 0 评论 -
软件调试基础(三【中断和异常】3.4-3.7)
架构核心机制主要特点x86 32位IDT + 门描述符支持任务门、硬件任务切换x86 64位IDT + IST机制取消任务门,引入IST栈切换ARM异常向量表 + VBAR统一异常模型,指令跳转方式。原创 2025-12-08 09:21:38 · 611 阅读 · 0 评论 -
软件调试基础(三【中断和异常】3.1-3.3)
中断是外部异步事件,异常是内部同步事件。中断机制使 CPU 能高效响应外设,异常机制处理指令执行中的错误或特殊行为。理解二者的区别与联系是掌握 CPU 工作机制和操作系统设计的基础。分类报告时间保存的CS和EIP指针可恢复性典型例子错误(Fault)开始执行导致异常的指令时导致异常的指令通常可恢复缺页异常、除零错误陷阱(Trap)执行完导致异常的指令时下一条指令可以恢复INT 3断点、INT n指令中止(Abort)不确定不确定不可以恢复硬件错误、系统表错误。原创 2025-10-27 09:27:42 · 468 阅读 · 0 评论 -
软件调试基础(二【CPU基础】2.9-2.10)
最初为Acorn RISC Machine(Acorn计算机公司的RISC芯片项目),后改为Advanced RISC Machines(1990年成立的公司名称)。:Architecture Reference Manual(架构参考手册),类似于英特尔的SDM,是ARM架构的权威参考资料。(2011年):引入64位支持(AArch64/AArch32状态),增强NEON和密码处理指令。(Application):面向复杂通用应用,支持基于MMU的虚拟内存系统,用于智能手机等设备。原创 2025-10-09 09:15:07 · 853 阅读 · 0 评论 -
软件调试基础(二【CPU基础】2.7-2.8)
分页机制的核心是页表,每个进程都有自己独立的页表,进程空间的切换实质上就是页表的切换,由CR3寄存器记录当前任务的页表位置。页目录表存放页目录表项(PDE),每个PDE长度为32位(4字节),每个页目录包含1024个PDE。页表存放页表项(PTE),每个PTE长度为32位,指向4KB内存页的起始物理地址(高20位,低12位为0)。每张页目录和页表包含512个表项(9位索引),大小仍为4KB。指向4MB内存页的PDE格式类似,但高10位代表4MB内存页的起始物理地址的高10位(低22位为0)。原创 2025-09-23 09:03:53 · 591 阅读 · 0 评论 -
软件调试基础(二【CPU基础】2.5-2.6)
简化内存管理,多进程共享相同段描述符(如CS=0x001B, DS=0x0023)→ 特权级分层(Ring 0~3) + 权限检查(DPL/CPL/RPL)。:段描述符(Segment Descriptor)定义段的基址、边界和访问属性。(Paging):线性地址 → 物理地址(详见2.6、2.7节)。:CPU调度的独立程序单位(操作系统视角:进程/线程)。高特权级(内核)可访问低特权级(应用),反之触发异常(如。(任务寄存器):存储当前任务TSS(任务状态段)的选择子。原创 2025-08-18 09:14:09 · 898 阅读 · 0 评论 -
软件调试基础(二【CPU基础】2.3-2.4)
IA-32处理器为兼容早期8086程序,定义了5种操作模式(见图2-2),确保现代CPU能执行不同时代的软件。注:调试寄存器(DR0~DR7)、性能监视寄存器等将在后续章节详述(第 4、5 章)。:R8~R15(可通过 R8D/R8W/R8B 访问低 32/16/8 位)。:由通用寄存器的位数决定(如 32 位 CPU 的寄存器宽度为 32 位)。:默认 64 位,通过 ID(地址)访问(如 EFER 寄存器 ID=应用程序可兼容32位(在兼容模式执行)或64位(在64位模式执行)。原创 2025-08-06 09:30:03 · 1027 阅读 · 0 评论 -
软件调试基础(二【CPU基础】2.1-2.2)
现代融合趋势:x86内部将CISC指令转为RISC微操作(μops);动态调度指令池中的μops → 分发到执行单元(ALU/FPU等)→ 结果写回指令池。内存控制器入片(Nehalem)→ GPU 单晶片集成(Sandy Bridge)检查指令状态 → 将临时结果永久化(写寄存器/内存)→ 保证逻辑正确性。:16位(8086)→32位(386)→64位(P4 EM64T)多核设计:Core 2 Duo(双核)/Quad(四核):系统编程指南(保护模式/虚拟化/APIC/缓存管理)原创 2025-07-14 09:39:12 · 932 阅读 · 0 评论 -
软件调试基础(一【6】)
软件调试是软件工程的核心环节,贯穿软件全生命周期(需求分析→维护支持)。本节系统解析软件问题的核心概念、责任归属、生命周期及经济成本,为软件调试提供理论基础。:临近发布时,调试能力直接决定项目能否按期交付(60%延期因未及时修复Bug导致)。:早期调试可避免后期指数级修复成本(需求阶段修复成本仅为运行阶段的1/75)。:提升代码可调试性(Debuggability)是高质量软件的关键指标。+------------------→ 软件生命周期阶段。:提升可调试性设计,将Bug拦截在需求阶段。原创 2025-06-09 10:31:31 · 501 阅读 · 0 评论 -
软件调试基础(一【5】)
单步执行是调试中用于逐条跟踪程序执行过程的核心技术,通过精细控制程序执行流程,帮助开发者观察代码动态行为。调试器利用符号文件中的行号信息,判断程序指针(IP)是否跨越语句边界,自动重复触发汇编级单步。保存中断时程序的状态(寄存器值、指令指针、标志位等),是分析问题的关键依据。:在代码中插入调试语句,将变量值、执行路径等信息输出至控制台、文件或调试器。断点的特殊形式,触发后自动执行预设动作(如打印变量值、记录日志),(后续章节展开):如内存分析、单步执行、日志调试等。原创 2025-06-03 09:46:59 · 887 阅读 · 0 评论 -
软件调试基础(一【1-5】)
在程序执行路径或数据访问路径上设置“陷阱”,使程序暂停执行并进入调试器,供调试者分析程序状态。原创 2025-05-28 09:31:03 · 612 阅读 · 0 评论
分享