debug編程執行個體

來源:互聯網
上載者:User

豪華絢麗的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”,那麼在系統核心沒有發生錯誤之前不會生效,如果遇到隨機的核心錯誤,它就會幫你除錯了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.