Debug的由來
1937年,美國青年霍德華.艾肯找到IBM公司為其投資200萬美圓研製計算機,第一台成品艾肯把它取名為:馬克1號,又叫“自動序列受控計算機”,從這時起IBM公司由生產制表機,肉鋪磅秤,咖啡研磨機等亂七八糟玩意兒的行業,正式跨進“計算機”領地。為馬克1號編製程序的是一位女數學家雷斯.霍波,有一天,她在調試程式時出現故障,拆開繼電器後,發現有隻飛蛾被夾扁在觸點中間,從而“卡”住了機器的運行。於是,霍波詼諧的把程式故障統稱為“臭蟲(BUG)“,把排除程式故障叫DEBUG,而這奇怪的”稱呼“,竟成為後來計算機領域的專業行話。如DOS系統中的調試程式,程式名稱就叫DEBUG.
==========================================
DOS中的Debug
:【
是為DOS提供的有力的偵錯,跟蹤程式運行,檢查系統數據的工具程式,它是在字元界面下以單字元命令方式工作。要很好地使用它必須具備一定的彙編程式設計和硬體基本知識的能力,當然,它為彙編語言程式設計師提供了有效的調試手段,它的功能包括以下幾個方面。
1. 直接輸入、更改、跟蹤、運行匯鎇栽闖絛潁華
2. 觀察作業系統的內容;
3. 查看ROM BIOS的內容;
4. 觀察更改RAM內部的設定值;
5. 以扇區或檔案的方式讀寫軟碟數據。
在DEBUG中地址用段地址與段內地址來表示,而段地址可以明確地指出來,也可以用一個段指示器(段暫存器)來代表,用段暫存器表示時,其段地址就是此暫存器的內含值:
如:用段地址和段內地址表示FOFF:0100
用段暫存器和段內地址表示CSF:0100←CS指向F000
下面列出了常用命令用法。
-A 地址 從指定地址開始編寫小彙編程式,按兩個回車鍵結束編輯
-U 地址 從指定地址開始反彙編32位元組的機器指令,預設地址則從上一U命令繼續
-D 始址 終址 以16進制/Asc字元對照方式顯示指定記憶體範圍的數據,每行顯示10H個位元組
-E 地址 值表 用給出的值表(空格分隔)替換指定地址開始的記憶體單元,例:-E100'v'1F'hello'
-N 檔案名稱 為後續的L/W命令約定所操作的檔案名稱
-L 地址 將N命令所指定檔案的內容讀入到指定記憶體位置。另,邏輯卷扇區直接讀:-L 地址 邏卷號 起始邏扇號 扇數
-W 地址 將BX-CX個位元組的記憶體數據寫入N命令指定的檔案中。另,邏輯卷扇區直接寫:-W 地址 邏卷號 起始邏扇號 扇數
-R 暫存器名 顯示並允許修改指定暫存器的值
-G=始址 終址 執行指定記憶體中的機器指令程式
-T=地址 單步執行機器指令,預設地址則從上一T命令繼續。另,繼續跟蹤m條指令:-T m
讀取c:卷的引導扇區,並保存到Boot.1檔案中,並簡單分析引導程式的前面幾條指令:
-L 1000 2 0 1
-N boot.1
-R bx ;輸入0000
-R cx ;輸入0200
-W 1000
-U 1000
讀取第一個硬碟上的主引導扇區,並保存到MB.1檔案中,在螢幕上顯示硬碟分區表數據:
-A 100
yyyy:0100 mov dx,0080
yyyy:01xx mov cx,0001
yyyy:01xx mov ax,yyyy
yyyy:01xx mov es,ax
yyyy:01xx mov bx,1000
yyyy:01xx mov ax,0201
yyyy:01xx int 13
yyyy:01zz nop
-G=yyyy:0100 01zz
-N mb.1
-R bx;輸入0000
-R cx;輸入0200
-W 1000
-D 11be 11ff
Debugger
"Debugger"這個詞按它的英文字面意思來講是這樣一種“裝置”(-er),這種裝置可以“消除”(De-)“系統中的缺陷”(bug)。然而事實上,迄今為止我們經常使用到的"Debugger"只是用來幫助我們進行Debug的工具,"Debugger"本身不能自動完成"Debug"。我們可以回想一下我們是如何進行Debug的,在進行Debug的過程中,我們通過Debugger來完成以下工作:
(1)監視“Debug對象”的狀態;
(2)控制“Debug對象”的運行;
這些工作可以為“發現Debug對象中存在的問題”以及“對解決問題方案的檢驗”提供有用的信息。
監控工作有時只需要由軟體就可以完成,有時不僅需要軟體支持,還需要硬體的支持。
Debugger除了被用來Debug,還被用來幫助我們理解“Debug的對象”內部結構,因為我們用到的Debugger能夠完成對“Debug對象”的監控工作,在監控的過程中可以獲取“Debug對象”動態特徵的信息,這對我們理解其結構是非常有用的。
如何打開debug開關
debug是設備調試,排錯中非常重要也非常有效的手段。需要對網路協定和Quidway產品相對熟悉的情況下使用。
過程:首先輸入
[Router]info-centerenable
使用console配置口時,輸入:
[Router]info-centerconsole
[Router]info-centerconsoledebug
使用遠程telnet時,輸入:
[Router]info-centermonitor
[Router]info-centermonitordebug
此處以調試鏈路層協定ppp數據包為例
[Router]debuggingppppacket
『注意』
1.特權模式下debug;可以從displaydebug看出現在有哪些調試開關是打開的
2.調試開關打開,對路由器性能會有相應程度的影響,所以用後請及時關閉調試信息:
[Router]undodebugall,或者ctrl+d亦可