关于debug调试的心得体会
计算机术语中的debug是什么意思?
计算机术语中的debug是什么意思?
相信很多程序员都知道debug这个单词,也明白它的意思,但是对于这词的由来,恐怕少有人知道。
关于debug的由来,要追溯到1937年。
1937年,美国青年霍德华.艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿的行业,正式跨进“计算机”领地。
为马克1号编制程序的是哈佛的一位女数学家格蕾丝·莫雷·赫伯,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。
于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。
从而debug意为程序除错的意思。
debug命令怎么用?是干什么的?
Debug在编程里指的是调试的意思,一般指的修复bug的一个过程。
Keil的Debug也是如此,在Keil中,用一个放大镜和字母d来表示开始/结束Debug。
Keil的Debug有2种,一种是软件仿真,即是你不需要单片机既可以运行本应该运行在单片机的程序,所以叫仿真,通过Option的Debug来选择:
这样当你运行Debug的时候,就会进入软件仿真,你可以看IO口的时序,定时器的PWM等等,但是软件仿真效果一般,正常情况下我们都是在真机环境中调试,也就是选择右侧的,使用Link工具调试:
Keil硬件仿真可以很方便的看单片机内部的一些数据,比如寄存器的值,变量的值,运行时间,可以断点调试。
debug卡怎么用呀?
debug 卡,就是电脑的主板诊断卡。 是利用主板加电自检post(power on seft test)所输出的信号,通过诊断卡读出主板现在的状态。
(post信号会停止在出故障的状态不动)然后通过编码,在两位或四位数码管上显示出结果,然后对照使用手册,查到的现在的状态。
根据不同接口,分pci、 isa、 并行口 根据 显示的数码管分 两位,四位显示 参见------ 主板故障诊断卡 概述 诊断卡的工作原理是利用主板中BIOS内部自检程序的检测结果,通过代码一一显示出来,结合本书的代码含义速查表就能很快地知道电脑故障所在。
尤其在PC机不能引导操作系统、黑屏、喇叭不叫时,使用本卡更能体现其便利,使您事半功倍。
BIOS在每次开机时,对系统的电路、存储器、键盘、视频部分、硬盘、软驱等各个组件进行严格测试,并分析硬盘系统配置,对已配置的基本I/O设置进行初始化,一切正常后,再引导操作系统。
其显著特点是以是否出现光标为分界线,先对关键性部件进行测试。
关键性部件发生故障强制机器转入停机,显示器无光标,则屏幕无任何反应。
然后,对非关键性部件进行测试,对有故障机器也继续运行,同时显示器无显示时,将本卡插入扩充槽内。
根据卡上显示的代码,参照你的机器是属于哪一种BIOS,再通过本书查出该代码所表示的故障原因和部位,就可清楚地知道故障所在. 指示灯功能速查表 灯名 中文意义 说 明 CLK 总线时钟 不论ISA或PCI只要一块空板(无CPU等)接通电源就应常亮,否则CLK信号坏。
BIOS 基本输入输出 主板运行时对BIOS有读操作时就闪亮。
IRDY 主设备准备好 有IRDY信号时才闪亮,否则不亮。
OSC 振荡 ISA槽的主振信号,空板上电则应常亮,否则停振。
FRAME 帧周期 PCI槽有循环帧信号时灯才闪亮,平时常亮。
RST 复位 开机或按了RESET开关后亮半秒钟熄灭必属正常,若不灭常因主板上的复位插针接上了加速开关或复位电路坏。
12V 电源 空板上电即应常亮,否则无此电压或主板有短路。 -12V 电源 空板上电即应常亮,否则无此电压或主板有短路。
5V 电源 空板上电即应常亮,否则无此电压或主板有短路。 -5V 电源 空板上电即应常亮,否则无此电压或主板有短路。
(只有ISA槽才有此电压) 3V3 电源 这是PCI槽特有的3.3V电压,空板上电即应常亮,有些有PCI槽的主板本身无此电压,则不亮。 故障代码含义速查表 查表必读:(注意事项)
1、特殊代码“00”和“FF”及其它起始码有三种情况出现:
①已由一系列其它代码之后再出现:“00”或“FF”,则主板OK。
②如果将CMOS中设置无错误,则不严重的故障不会影响BIOS自检的继续,而最终出现“00”或“FF”。
③一开机就出现“00”或“FF”或其它起始代码并且不变化则为板没有运行起来。
2、本表是按代码值从小到大排序,卡中出码顺序不定。
3、未定义的代码表中未列出。
4、对于不同BIOS(常用的AMI、Award、Phoenix)用同一代码所代表的意义有所不同,因此应弄清您所检测的电脑是属于哪一种类型的BIOS,您可查问你的电脑使用手册,或从主板上的BIOS芯片上直接查看,也可以在启动屏幕时直接看到。
5、有少数主板的PCI槽只有前一部分代码出现,但ISA槽则有完整自检代码输出。
且目前已发现有极个别原装机主板的ISA槽无代码输出,而PCI槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。
另外,同一块主板的不同PCI槽,有的槽有完整代码送出,如DELL810主板只有靠近CPU的一个PCI槽有完整的代码显示,一直变化到“00”或“FF”,而其它槽走到“38”则不继续变化。 6、复位信号所需时间ISA与PCI不一定同步,故有可能ISA开始出代码,但PCI的复位灯还不熄,故PCI代码停在起始码上。 代码 Award BIOS Ami BIOS Phoenix BIOS或Tandy 3000 BIOS 00 . 已显示系统的配置;即将控制INI19引导装入。 . 01 处理器测试1,处理器状态核实,如果测试失败,循环是无限的。 处理器寄存器的测试即将开始,不可屏蔽中断即将停用。 CPU寄存器测试正在进行或者失败。 02 确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。 停用不可屏蔽中断;通过延迟开始。 CMOS写入/读出正在进行或者失灵。 03 清除8042键盘控制器,发出TESTKBRD命令(AAH) 通电延迟已完成。 ROM BIOS检查部件正在进行或失灵。 04 使8042键盘控制器复位,核实TESTKBRD。 键盘控制器软复位/通电测试。 可编程间隔计时器的测试正在进行或失灵。 05 如果不断重复制造测试1至5,可获得8042控制状态。 已确定软复位/通电;即将启动ROM。 DMA初如准备正在进行或者失灵。 06 使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。 已启动ROM计算ROM BIOS检查总和,以及检查键盘缓冲器是否清除。 DMA初始页面寄存器读/写测试正在进行或失灵。 07 处理器测试2,核实CPU寄存器的工作。 ROM BIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。 . 08 使CMOS计时器作初始准备,正常的更新计时器的循环。 已向键盘发出BAT命令,即将写入BAT命令。 RAM更新检验正在进行或失灵。 09 EPROM检查总和且必须等于零才通过。 核实键盘的基本保证测试,接着核实键盘命令字节。 第一个64K RAM测试正在进行。 0A 使视频接口作初始准备。 发出键盘命令字节代码,即将写入命令字节数据。 第一个64K RAM芯片或数据线失灵,移位。 0B 测试8254通道0。 写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。 第一个64K RAM奇/偶逻辑失灵。 0C 测试8254通道1。 键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。 第一个64K RAN的地址线故障。 0D 1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。 已处理NOP命令;接着测试CMOS停开寄存器。 第一个64K RAM的奇偶性失灵 0E 测试CMOS停机字节。 CMOS停开寄存器读/写测试;将计算CMOS检查总和。 初始化输入/输出端口地址。 0F 测试扩展的CMOS。 已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。 . 10 测试DMA通道0。 CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。 第一个64K RAM第0位故障。 11 测试DMA通道1。 CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。 第一个64DK RAM第1位故障。 12 测试DMA页面寄存器。 停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。 第一个64DK RAM第2位故障。 13 测试8741键盘控制器接口。 视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。 第一个64DK RAM第3位故障。 14 测试存储器更新触发电路。 电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。 第一个64DK RAM第4位故障。 15 测试开头64K的系统存储器。 第2通道计时器测试了一半;8254第2通道计时器即将完成测试。 第一个64DK RAM第5位故障。 16 建立8259所用的中断矢量表。 第2通道计时器测试结束;8254第1通道计时器即将完成测试。 第一个64DK RAM第6位故障。 17 调准视频输入/输出工作,若装有视频BIOS则启用。 第1通道计时器测试结束;8254第0通道计时器即将完成测试。 第一个64DK RAM第7位故障。 18 测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。 第0通道计时器测试结束;即将开始更新存储器。 第一个64DK RAM第8位故障。 19 测试第1通道的中断控制器(8259)屏蔽位。 已开始更新存储器,接着将完成存储器的更新。 第一个64DK RAM第9位故障。 1A 测试第2通道的中断控制器(8259)屏蔽位。 正在触发存储器更新线路,即将检查15微秒通/断时间。 第一个64DK RAM第10位故障。 1B 测试CMOS电池电平。 完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。 第一个64DK RAM第11位故障。 1C 测试CMOS检查总和。 . 第一个64DK RAM第12位故障。 1D 调定CMOS配置。 . 第一个64DK RAM第13位故障。 1E 测定系统存储器的大小,并且把它和CMOS值比较。 . 第一个64DK RAM第14位故障。 1F 测试64K存储器至最高640K。 . 第一个64DK RAM第15位故障。 20 测量固定的8259中断位。 开始基本的64K存储器测试;即将测试地址线。 从属DMA寄存器测试正在进行或失灵。 21 维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。 通过地址线测试;即将触发奇偶性。 主DMA寄存器测试正在进行或失灵。 22 测试8259的中断功能。 结束触发奇偶性;将开始串行数据读/写测试。 主中断屏蔽寄存器测试正在进行或失灵。 23 测试保护方式8086虚拟方式和8086页面方式。 基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。 从属中断屏蔽存器测试正在进行或失灵。 24 测定1MB以上的扩展存储器。 矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。 设置ES段地址寄存器注册表到内存高端。 25 测试除头一个64K之后的所有存储器。 完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。 装入中断矢量正在进行或失灵。 26 测试保护方式的例外情况。 读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。 开启A20地址线;使之参入寻址。 27 确定超高速缓冲存储器的控制或屏蔽RAM。 全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。 键盘控制器测试正在进行或失灵。 28 确定超高速缓冲存储器的控制或者特别的8042键盘控制器。 完成中断矢量之后的初始准备;即将调定单色方式。 CMOS电源故障/检查总和计算正在进行。 29 . 已调定单色方式,即将调定彩色方式。 CMOS配置有效性的检查正在进行。 2A 使键盘控制器作初始准备。 已调定彩色方式,即将进行ROM测试前的触发奇偶性。 置空64K基本内存。 2B 使磁碟驱动器和控制器作初始准备。 触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。 屏幕存储器测试正在进行或失灵。 2C 检查串行端口,并使之作初始准备。 完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。 屏幕初始准备正在进行或失灵。 2D 检测并行端口,并使之作初始准备。 已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。 屏幕回扫测试正在进行或失灵。 2E 使硬磁盘驱动器和控制器作初始准备。 从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。 检测视频ROM正在进行。 2F 检测数学协处理器,并使之作初始准备。 没发现EGA/VGA;即将开始显示器存储器读/写测试。 . 30 建立基本内存和扩展内存。 通过显示器存储器读/写测试;即将进行扫描检查。 认为屏幕是可以工作的。 31 检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。 显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。 单色监视器是可以工作的。 32 对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。 通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。 彩色监视器(40列)是可以工作的。 33 . 视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。 彩色监视器(80列)是可以工作的。 34 . 已检验显示器适配器;接着将调定显示方式。 计时器滴答声中断测试正在进行或失灵。 35 . 完成调定显示方式;即将检查BIOS ROM的数据区。 停机测试正在进行或失灵。 36 . 已检查BIOS ROM数据区;即将调定通电信息的游标。 门电路中A-20失灵。 37 . 识别通电信息的游标调定已完成;即将显示通电信息。 保护方式中的意外中断。 38 . 完成显示通电信息;即将读出新的游标位置。 RAM测试正在进行或者地址故障>FFFFH。 39 . 已读出保存游标位置,即将显示引用信息串。 . 3A . 引用信息串显示结束;即将显示发现