现在的位置: 首页 > 综合 > 正文

debug编程实例

2013年09月17日 ⁄ 综合 ⁄ 共 4778字 ⁄ 字号 评论关闭

豪华绚丽的Windows让人们把DOS抛到遥远的记忆角落。然而,真正有价值的东西不会轻易退出历史的舞台,Debug就是这样的经典作品之一。从古老的DOS到现今的Windows XP,Debug一直紧紧跟随着微软的操作系统,静静躺在系统文件夹里。也许你平时对它不闻不问,但要想成为人人羡慕的系统高手,我们就得唤醒这个沉睡已久的命令行工具了,通过阅读本文对它的研究,相信你会同笔者一样的感觉到:姜,还是老的辣!

  一、寻根溯源:世界第一只计算机BUG和Debug

  霍德华·艾肯在哈佛大学攻读物理学博士学位时,开始梦想制作一台计算机帮他解决数学难题,工作后,他找到IBM公司为其投资100万美元研制计算机,第一台成品艾肯把它取名为:马克Ⅰ号,又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机、肉铺磅秤、咖啡碾磨机等乱七八糟玩意的行业,正式跨进了计算机“领地”。

  1945年9月9日,为马克II号编制计算程序的女数学家格雷斯·霍波在调试程序时出现了故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是霍波把这只飞蛾粘在了计算机的工作日志中,并恢谐地把程序故障统称为“臭虫”(bug),自此以后,只要这台计算机一停止运转(那时候是经常的事),同事们就会开玩笑地对霍德华·艾肯说,我们正在“Debug”(除虫)呢!后来“bug”成为计算机领域的专业行话,如DOS系统中的调试程序,程序名称就叫Debug。

  目前那只飞蛾还保存在美国史密森尼博物院的美国历史国家博物馆中呢。

  1981年,第一个PC DOS(即DOS 1.00)面世时就已经带上了Debug.com。不过,到目前为止,Debug一直没有大的变动——当然,这是指Debug提供给用户的功能,Debug本身代码、内部运行机制必然随着操作系统的变化而不断改变。然而,无论是Windows 98、2000还是XP,Debug的操作方式与纯DOS环境下基本一样。

  二、初学乍练:短短几行命令学用Debug

  Debug.exe文件位于Windows/system32目录(Windows XP)或Windows/command目录(Windows 9x)下。基本使用方法如下:

  Step 1:点击“开始→运行”,输入“CMD”(Windows 2000/XP)或“Command”(Windows 9x)打开命令提示符窗口。

  Step 2:输入“Debug”并回车,出现提示符“-”,现在你已经开启了神秘的Debug世界了。

  小提示

  执行“?”命令可以参看Debug主要命令及参数。

  Step 3:输入“D FE00:0”,回车后可以看到结果(见图1),这个就是主板BIOS的厂商信息。接着再输入“D FFFF:5 L 8”,回车后,主板的BIOS版本日期也出来了。

  Step 4:现在再输入“Q”命令,回车后就退出了Debug程序。

  三、继续深入:Debug经典实例秀

  在操作以下实例之前,提醒您要注意操作安全,因为Debug命令有一定风险,如果输入错误,有可能对系统造成一定破坏,这点请您一定注意。

  实例1:查看你的显卡信息

  输入“D C000:0090”命令并回车,这时右侧部分可以看到系统中显卡的显存、生产厂商等信息。

  实例2:制作BIOS密码破解器

  忘记BIOS密码,一般都采用放电法来清空密码,但这对普通用户有一定难度,并且还得开机箱。其实利用Debug的0命令则简单得多!请在“-”后输入以下命令:

  o 70 19
  o 71 15
  q

  重启电脑,系统提示CMOS校验和出错,并要求重新进入BIOS设置CMOS。

  小提示:70和71是CMOS的两个端口,我们可以在它们的后面随意写入一些错误数据(如19、16、17等),就会清空CMOS里所有设置,如果不见效不妨多用几个数据试试。

  如果觉得每次输入Debug命令太麻烦,可以用下面的方法把命令存成一个COM文件,需要解除密码时只要运行一下就行了。请在Debug中命令提示符“-”后输入以下命令:

  A 100
  MOV DX,70
  MOV AL,10
  OUT DX,AL
  MOV DX,71
  MOV AL,01
  OUT DX,AL(这里要两次回车,接着会出现“-”提示符,然后再输入下面的命令)
  R CX(回车后会出现“CX 0000”,然后再次按回车)
  0C
  N pass.COM
  W
  Q

  这样就会在Debug当前目录下生成pass.com,是一个清除BIOS口令设置的程序,只要在DOS提示符下键入“pass”,然后按回车即可。经我们测试,其实在Windows下面运行也可以成功。知识不太稳定,有时会重新启动计算机。

  实例3:检测LCD显示器的坏点

  购买LCD显示器最忌有亮点或暗点,我们可以借助相关的检测软件来辅助查看,但在配电脑时,老板常常不让我们装软件,其实利用Debug中的F命令就可以看得清清楚楚!

  为了检测LCD屏幕是否存在坏点,可以将整个屏幕填充为红、绿、蓝、白等纯色,以便检查。下面给出几个常用的显示屏检测F命令(Debug窗口一般较小,按Alt+Enter将它放大到整个屏幕):

  F B800:00 F9F 20 70 全屏白色
  F B800:00 F9F 20 40 全屏红色
  F B800:00 F9F 20 20 全屏绿色
  F B800:00 F9F 20 10 全屏蓝色
  F B800:00 F9F C5 07 C4 07 全屏白色十字网格
  F B800:00 F9F C5 04 C4 04 全屏红色十字网格
  F B800:00 F9F C5 02 C4 02 全屏绿色十字网格
  F B800:00 F9F C5 01 C4 01 全屏蓝色十字网格

  实例4:用Debug恢复Windows 98启动

  在同时装有Windows 98和Windows 2000的电脑上,有时在Windows 98下整理C盘的磁盘碎片后(假设Windows 98装在C盘),下次很有可能启动不了Windows 98。这时必须重新生成BOOTSECT.DOS(此文件是用来引导Windows 98的),Windows 98才可以重新引导。可以用Debug生成BOOTSECT.DOS文件,先用软盘启动到DOS状态:

  C:>Debug
  L 100 2 0 1
  N BOOTSECT (BOOTSECT表示Windows 98引导记录的文件名)
  RCX
  CX 0000
  200
  W
  Q

  现在将C:/BOOTSECT改名为BOOTSECT.DOS,覆盖原来的BOOTSECT.DOS即可。

  做个死循环炸弹玩玩

  所谓死循环,实际上是编程上一种失误,造成的程序反复执行同样指令,造成软件死锁。利用Debug,我们可以做一个小小的死循环。在Debug的命令提示符“-”后输入以下命令:

  a100
  mov dl,1
  mov ah,2
  int 21
  inc dl
  jmp 102(按两次回车)
  nboot.com
  rbx(接着按两次回车,可能会出现出错信息,不要管它,再输入一遍即可)
  rcx
  a
  -w

  好了,现在可以在DOS下面执行生成的boot.com试试效果吧,同时按ctrl+break或ctrl+c可以强制停止。如果是在windows下,强制退出即可,不过PC喇叭的声音可能得过段时间才能停下来。

  三、硬盘救命稻草:用Debug玩转磁盘

  特别提醒:由于以下操作非常危险,所以建议你三思而行,并且最好在电脑中只挂接要操作的硬盘,以免误操作了其他硬盘。

  实例1:清除硬盘驱动器的所有信息

  本来清除硬盘信息用Fdisk便可以轻松搞定,可如果当你碰上用FDISK命令无法删除分区信息的情况,甚至是一运行FDISK就死机,那么就不得不求助于Debug了。通过下面的命令,可以清除硬盘上所有分区信息。

  小提示:危险操作!请慎重执行!

  C:/>Debug
  F 200 L1000 0
  A CS:100
  xxxx:0100 MOV AX,301
  xxxx:0103 MOV BX,200
  xxxx:0106 MOV CX,1
  xxxx:0109 MOV DX,80 (注意:80代表主盘,81代表从盘)
  xxxx:010C INT 13
  xxxx:010E INT 20
  xxxx:0110
  g
  Program terminated normally
  q

  以上程序执行完毕后,重启电脑,此时硬盘的分区信息都已经被清除,我们便可以使用Fdisk为硬盘进行重新分区,然后格式化即可正常使用了。

  小提示:删除所有分区

  如果想快速删除所有分区,那么可将以下命令保存到一个文本文件中(比如:Delpart.txt ):

  a 100 int13rax
  0301
  rbx
  0200
  f 200 l 200 0
  rcx
  0001
  rdx
  0080
  p
  q

  然后在纯DOS(比如用启动软盘启动系统)中执行“Debug

  实例2:拯救软盘数据

  一分钟前还打得开的软盘,一分钟后就说“该软盘没有格式化,要格式化么?”但这里面却偏偏保存着重要数据,其实出现这种情况往往是软盘的0面0道1扇区逻辑损坏的原因,这时可以试试以下方法:

  Step 1:将一张好的软盘插入软驱。

  Step 2:执行Debug,并在提示符“-”后输入以下命令:
  
  -L 100 0 0 1

  Step 3:将好的软盘取出,插入需要恢复的软盘,再输入以下命令:

  -W 100 0 0 1

  不过,如果0面0道1扇是物理损坏,DEBUG会告诉我们不能写盘,这时,你只能再尝试HD-COPY等工具软件了。

  实例3:清除硬盘的主引导记录

  如果你遇到了FDISK不能识别硬盘,或在电脑启动时出现没有硬盘的错误提示,比如:“Fixed disk 0 Failure”,那么可以试试下面的方法,但是要注意的是,这样会删除所有硬盘分区(包括非DOS分区),当然数据也会全部丢失。

  Step 1:制作一张启动软盘,其中包括:DEBUG、FDISK、FORMAT等程序。用它启动电脑,输入“Debug”并回车。

  Step 2:在Debug的命令提示符“-”后输入以下命令:

  FCS:200 400 0
  RAX
  0301
  RBX
  0600
  RCX
  0001
  RDX
  0080
  E 100 CD 13
  P
  Q

  Step 3:完成后分别运行FDISK和Format进行分区和格式化即可。

  实例4:低格硬盘

  方法一:完全低格

  -a 100
  mov ax,0703
  mov cx,0001
  mov dx,0080
  int 13
  int 3
  010D
  G 100

  小提示:有些主板的BIOS中已经存放着低格程序,因此可以直接用Debug来调用,命令为“g c800:0005”。

  方法二:快速低格

  -a 100
  mov ax,0500
  mov bx,0180
  mov cx,0001
  mov dx,0080
  int 13
  int 3
  E 0180 0 0 0002
  G 100

  你知道吗?

  Windows 2000/XP的Debug模式

  打开启动分区的“boot.ini”文件,接着在“multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional" /fastdetect”语句后面加一个空格,然后再输入“/DEBUG”,在启动Windows 2000/XP时调入系统中的除错程序,它可以在任何时间激活,这个参数可以用来解决有规律发生的错误。

  如果换为“/CRASHDEBUG”,那么在系统核心没有发生错误之前不会生效,如果遇到随机的内核错误,它就会帮你除错了。

 

抱歉!评论已关闭.