0.這是什么東西?
DOSBox debugger是一款由DOSBox原作者為DOSBox量身打造的調(diào)試器蒿褂,幾乎所有運行于DOSBox上的程序都可以用它進行調(diào)試圆米。0.74-3版本的下載地址為http://source.dosbox.com/dosbox-74-3-debug.exe
1.為什么選擇DOSBox debugger?
不同的人可能有不同的理由,我的理由是為了學習16位和32位masm匯編啄栓。在64位操作系統(tǒng)上學習匯編有很多方式娄帖,那么為什么是dosbox及其debugger?
(1)開門見山地說吧昙楚,最重要的一點近速,就是在masm-code插件的加持下,dosbox debugger可以完美地兼容于vscode
vscode堪旧,永遠滴神削葱!
(2)VS上同樣可以寫masm,而且VS自帶的調(diào)試器功能更強大淳梦,界面更友好析砸,那為啥不用VS?一是因為VS實在太大了爆袍,二是因為vscode永遠滴神
三是因為VS配置起來比較麻煩首繁,而我比較懶
(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)試器午绳,鼠標基本是完全沒用的置侍,想要操作它必須得用鍵盤上的各種鍵或者在其里面敲命令。下面就講講幾個常用的鍵位:
單步運行 F10
查看數(shù)據(jù)段內(nèi)存 alt+D(記得等程序?qū)?shù)據(jù)段地址傳給DS之后)
然后沒了拦焚。由于本人能力所限蜡坊,目前常用的就這兩條。當然赎败,還是把其他的鍵或指令都展示一下:
F3 / F6-歷史記錄中的上一個命令秕衙。
F4 / F7-歷史中的下一個命令。
F5-運行螟够。
F9-設(shè)置/刪除斷點灾梦。
F10 / F11-跨步/追溯到指令。
ALT + D / E / S / X / B-將數(shù)據(jù)視圖設(shè)置為DS:SI / ES:DI / SS:SP / DS:DX / ES:BX妓笙。
esc-清除輸入行若河。
上/下-移動代碼視圖光標。
Page Up / Down-滾動數(shù)據(jù)視圖寞宫。
Home / End-滾動日志消息萧福。
BP [段]:[偏移]-設(shè)置斷點。
BPINT [intNr] *-設(shè)置中斷斷點辈赋。
BPINT [intNr] [ah] *-用ah設(shè)置中斷斷點鲫忍。
BPINT [intNr] [ah] [al]-使用ah和al設(shè)置中斷斷點。
BPM [段]:[偏移量]-設(shè)置內(nèi)存斷點(內(nèi)存更改)钥屈。
BPPM [選擇器]:[偏移量]-設(shè)置pmode內(nèi)存斷點(內(nèi)存更改)悟民。
BPLM [線性地址]-設(shè)置線性內(nèi)存斷點(內(nèi)存更改)。
BPLIST-列出斷點篷就。
BPDEL [bpNr] / *-刪除斷點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-運行系統(tǒng)計時器。
HELP-幫助
來源:https://www.vogons.org/viewtopic.php?t=3944
4.結(jié)語
其實也沒啥好說的顶考,這個debugger還是比較傻瓜的赁还。
當然,感謝dosbox及其debugger的作者驹沿,感謝我的舍友Wgagaxnunigo讓我知道了這款強大的調(diào)試器艘策,感謝masm-code的作者kaixa,感謝我在vscode上寫匯編的引路人wz大佬(有空可以去看看她的關(guān)于vscode配置masm環(huán)境的文章https://zhuanlan.zhihu.com/p/105268949)
由于本人水平所限渊季,此片文章中可能存在一些錯誤或繁瑣之處朋蔫,還望各路大佬多多指教。