DOSBox debugger初步指南

0.這是什么東西?

DOSBox debugger是一款由DOSBox原作者為DOSBox量身打造的調(diào)試器,幾乎所有運(yùn)行于DOSBox上的程序都可以用它進(jìn)行調(diào)試。0.74-3版本的下載地址為http://source.dosbox.com/dosbox-74-3-debug.exe

dosbox_debugger的界面

1.為什么選擇DOSBox debugger?

不同的人可能有不同的理由,我的理由是為了學(xué)習(xí)16位和32位masm匯編。在64位操作系統(tǒng)上學(xué)習(xí)匯編有很多方式,那么為什么是dosbox及其debugger?

(1)開門見山地說吧,最重要的一點(diǎn),就是在masm-code插件的加持下,dosbox debugger可以完美地兼容于vscode

vscode,永遠(yuǎn)滴神!

(2)VS上同樣可以寫masm,而且VS自帶的調(diào)試器功能更強(qiáng)大,界面更友好,那為啥不用VS?一是因?yàn)閂S實(shí)在太大了,二是因?yàn)関scode永遠(yuǎn)滴神

三是因?yàn)閂S配置起來比較麻煩,而我比較懶

(3)emu8086?畢竟是8086,不支持32位

(4)masm for windows?本體就是個文本編輯器,主要原因是丑

眾所周知,好看的工作環(huán)境有利于提高工作效率

(5)Red asm/Visual asm/等等?別問,問就是vscode天下第一

(6)為什么不用dosbox原本的debug.exe?功能少而且難以查看32位寄存器

2.安裝

dosbox怎么裝我就不說了,網(wǎng)上一大堆。從上面那個鏈接下載了debugger之后,將其放在dosbox.exe同一個文件夾下,就基本ok了,雙擊該exe就可以打開了。

如果是使用了masm-code的vscode,那么就放在C:\Users\你的名字\AppData\Roaming\Code\User\globalStorage\kaixa.masm-code這個文件夾里,并把這個debugger的文件名改成DOSBox.exe,把原來的DOSBox.exe改成另外的名字。這樣就可以讓你在使用vscode時通過ctrl+shift+p或者F1直接啟動dosbox及其debugger
在這里啟動

彈出dosbox窗口后,輸入debug xxxx.exe并按下回車,dosbox debugger就會開始工作了。

3.使用

這款調(diào)試器有別于現(xiàn)在的大多數(shù)高級語言調(diào)試器,鼠標(biāo)基本是完全沒用的,想要操作它必須得用鍵盤上的各種鍵或者在其里面敲命令。下面就講講幾個常用的鍵位:
單步運(yùn)行 F10
查看數(shù)據(jù)段內(nèi)存 alt+D(記得等程序?qū)?shù)據(jù)段地址傳給DS之后)
然后沒了。由于本人能力所限,目前常用的就這兩條。當(dāng)然,還是把其他的鍵或指令都展示一下:

F3 / F6-歷史記錄中的上一個命令。
F4 / F7-歷史中的下一個命令。
F5-運(yùn)行。
F9-設(shè)置/刪除斷點(diǎn)。
F10 / F11-跨步/追溯到指令。
ALT + D / E / S / X / B-將數(shù)據(jù)視圖設(shè)置為DS:SI / ES:DI / SS:SP / DS:DX / ES:BX。
esc-清除輸入行。
上/下-移動代碼視圖光標(biāo)。
Page Up / Down-滾動數(shù)據(jù)視圖。
Home / End-滾動日志消息。
BP [段]:[偏移]-設(shè)置斷點(diǎn)。
BPINT [intNr] *-設(shè)置中斷斷點(diǎn)。
BPINT [intNr] [ah] *-用ah設(shè)置中斷斷點(diǎn)。
BPINT [intNr] [ah] [al]-使用ah和al設(shè)置中斷斷點(diǎn)。
BPM [段]:[偏移量]-設(shè)置內(nèi)存斷點(diǎn)(內(nèi)存更改)。
BPPM [選擇器]:[偏移量]-設(shè)置pmode內(nèi)存斷點(diǎn)(內(nèi)存更改)。
BPLM [線性地址]-設(shè)置線性內(nèi)存斷點(diǎn)(內(nèi)存更改)。
BPLIST-列出斷點(diǎn)。
BPDEL [bpNr] / *-刪除斷點(diǎn)nr /全部。
C / D [段]:[偏移量]-設(shè)置代碼/數(shù)據(jù)視圖地址。
DOS MCBS-顯示內(nèi)存控制塊鏈。
INT [nr] / INTT [nr]-執(zhí)行/跟蹤到中斷。
LOG [num]-寫入cpu日志文件。
LOGS / LOGL [num]-寫入長/短的cpu日志文件。
HEAVYLOG-在dosbox退出時啟用/禁用自動cpu日志。
ZEROPROTECT-啟用/禁用零代碼執(zhí)行檢測。
SR [reg] [value]-設(shè)置寄存器值
SM [seg]:[off] [val] [。] ..-用以下值設(shè)置存儲器。
IV [seg]:[off] [name]-為內(nèi)存地址創(chuàng)建var名稱。
SV [filename]-將var列表保存在文件中。
LV [filename]-從文件加載var列表。
ADDLOG [消息]-將消息添加到日志文件。
MEMDUMP [seg]:[off] [len]-將內(nèi)存寫入文件memdump.txt。
MEMDUMPBIN :[o] [len]-將內(nèi)存寫入文件memdump.bin。
SELINFO [segName]-顯示選擇器信息。
INTVEC [文件名]-將中斷向量表寫入文件。
INTHAND [intNum]-將代碼視圖設(shè)置為中斷處理程序。
CPU-顯示CPU狀態(tài)信息。
GDT-列出GDT的描述符。
LDT-列出LDT的描述符。
IDT-列出IDT的描述符。
PAGING [頁面]-顯示頁面表的內(nèi)容。
EXTEND-切換其他信息。
TIMERIRQ-運(yùn)行系統(tǒng)計時器。
HELP-幫助

來源:https://www.vogons.org/viewtopic.php?t=3944

4.結(jié)語

其實(shí)也沒啥好說的,這個debugger還是比較傻瓜的。
當(dāng)然,感謝dosbox及其debugger的作者,感謝我的舍友Wgagaxnunigo讓我知道了這款強(qiáng)大的調(diào)試器,感謝masm-code的作者kaixa,感謝我在vscode上寫匯編的引路人wz大佬(有空可以去看看她的關(guān)于vscode配置masm環(huán)境的文章https://zhuanlan.zhihu.com/p/105268949
由于本人水平所限,此片文章中可能存在一些錯誤或繁瑣之處,還望各路大佬多多指教。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • layout: wikititle: Windbg調(diào)試筆記categories: Debugdescription...
    超哥__閱讀 19,978評論 0 17
  • 在上篇文章中我們具體介紹了匯編語言的一些背景, 以及 8086匯編 工作原理, 在這篇文章中具體講解8086匯編指...
    Lin__Chuan閱讀 3,329評論 0 2
  • 王爽匯編全書知識點(diǎn)大綱 第一章 基礎(chǔ)知識 機(jī)器語言 匯編語言的產(chǎn)生 匯編語言的組成 存儲器 cpu對存儲器的讀寫 ...
    2c3ba901516f閱讀 2,677評論 0 1
  • Android新攻防技術(shù)研究與應(yīng)用通用軟件保護(hù)手段C++模板元常量字符串混淆調(diào)試檢測常用調(diào)試器進(jìn)程名檢測/二進(jìn)制匹...
    超哥__閱讀 3,254評論 1 4
  • 命令簡介 cmd是command的縮寫.即命令行 。 雖然隨著計算機(jī)產(chǎn)業(yè)的發(fā)展,Windows 操作系統(tǒng)的應(yīng)用越來...
    Littleston閱讀 3,428評論 0 12

友情鏈接更多精彩內(nèi)容