12 除錯bootsect s的乙個坑!

2021-10-04 08:05:03 字數 728 閱讀 7855

0 原本計畫:

前兩天(2020-3-22),準備寫一篇除錯bootsect,setup,head三個程式的總結,但出師不利,除錯bootsect

第一段**(即移動本身到0x9000)就掉坑了,反覆檢查發現rep movw後0x9000竟然一片0x0000(就像我大腦

一片空白,一臉懵逼),折騰了2天,才解決!

1 掉坑日誌
第乙個坑:在bios載入引導程式bootsect到記憶體位置0x07c0處設定斷點

故設定斷點: vb 0x0000:0x7c00 而不是 0x0000:0x0c70

第二個坑:複製自己(bootsect)到0x9000,共512位元組(乙個扇區),如下圖**

想檢視執行完之後,0x9000是否已複製成功?

x /512bx 0x9000 (bx:b:單位:乙個位元組 x:十六進製制顯示,即檢視乙個扇區512位元組)

但其實上面執行後,全是0x0000(一臉懵逼)

答案其實是:x /512bx 0x90000 (沒錯,是需要多乙個0 !)

3 總結

不能放過任何乙個「不以為然的細節」,尤其在學習核心時!要知道,每一句**都不是多餘的,甚至乙個數字!

1 2 程式設計基礎 GDB程式除錯

gdb是gnu發布的一款功能強大的程式除錯工具。gdb主要完成下面三個方面的功能 1.啟動被除錯程式 2.讓被除錯的程式在指定的位置停住。3.當程式被停住時,可以檢查程式狀態 如變數值 1.編譯生成可執行檔案 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設...

《Fiddler除錯權威指南》 1 2 快速入門

1.2.1 基本概念 fiddler是一款基於windows系統的專用 伺服器軟體。本地執行的程式,如web瀏覽器 office應用程式以及其他客戶端應用,可以把http和https請求傳送給fiddler,fiddler通常把這些請求 給web伺服器。然後,伺服器把這些請求的響應返回給fiddle...

除錯方法(一)

gdb n 563 os gdb p friendlist 1 int main int argc,char ar if bdaemon daemon run 省略無關 在這個程式中,我們接收到 ctrl c 訊號 對應訊號 sigint 時會簡單列印一行資訊,而當用 gdb 除錯這個程式時,由於 ...