UNIX v6原始碼分析除錯之一:環境搭建 -- Ubuntu單步除錯系統程式碼
UNIX v6(x86)版本的程式碼短小精悍,非常值得學習除錯。而且程式碼量比較少,容易找到方向。
我使用的Ubuntu 12.04 32位的系統。
首先下載程式碼,下載地址 https://github.com/guilleiguaran/xv6。該版本的程式碼能執行在x86平臺的。
接著安裝 qemu,執行sudo apt-get install qemu即可。
解壓下載的程式碼到某個目錄,我這裡使用unzip解壓。
cd命令進入到程式碼的根目錄,接著執行 sudo make qemu-gdb 命令編譯xv6原始碼,同時執行qemu。
這時候,開啟執行另外一個Terminal,同樣cd命令進入到xv6程式碼的根目錄,然後執行 gdb 命令進入除錯。
設定斷點到 bootasm.S 的程式碼中,地址為 0x7c00。如下圖所示(接下去好好除錯吧):
相關推薦
UNIX v6原始碼分析除錯之一:環境搭建 -- Ubuntu單步除錯系統程式碼
UNIX v6(x86)版本的程式碼短小精悍,非常值得學習除錯。而且程式碼量比較少,容易找到方向。我使用的Ubuntu 12.04 32位的系統。首先下載程式碼,下載地址 https://github.com/guilleiguaran/xv6。該版本的程式碼能執行在x86平
UNIX v6原始碼分析除錯之二:單步除錯系統程式碼 main函式之 kinit1
環境搭建完成,該學習Main.c的main函數了。先貼上main函式的實現。int main(void) { kinit1(end, P2V(4*1024*1024)); // phys page allocator kvmalloc(); // k
UNIX v6原始碼分析除錯之三:單步除錯系統程式碼 main函式之 kvmalloc
kvmalloc(); // kernel page table kvmalloc函式初始化核心的記憶體分頁頁表。關於虛擬記憶體,線性地址,記憶體分頁,記憶體分段等等在作業系統原理的書籍中都有詳細說明,我這裡就不囉嗦了。 從程式碼實現的
CNTK與深度強化學習筆記之一: 環境搭建和基本概念
如需轉載,請指明出處。 前言 深度強化學習是人工智慧當前的熱點,CNTK也是微軟力推的深度學習框架,2.x版本比之前有了長足的進步。目前國內將這兩者融合起來的文章還不多。因此寫作了這個學習筆記,希望能對大家有所幫助。 硬體,開發環境以及CNTK安裝 CN
Python爬蟲雲伺服器搭建系列之一:環境搭建
簡介 本文所用到的雲伺服器是阿里雲:Ubuntu 16.04 64位。 0x00:建立例項並啟動伺服器 本節跳過 0x01:登陸伺服器 工具:putty 安裝putty後輸入ip和port(預設22),連線型別選擇SSH(預設),儲存save
Ext4.2.1學習歷程之一:環境搭建及Hello ExtJS4.2
原文出處 http://blog.itpub.net/28562677/viewspace-1066765/ 1、從官網下載ExtJS4.2資源包,解壓開有原始碼、API文件、演示程式; 2、官網地址:http://www.sencha.com/products/e
Weex開發體驗之一:環境搭建及調測
搭建開發環境 參考文件 本機開發環境 windows7 64bit 搭建步驟 下載node node包括javascript的執行環境和npm; 下載地址:https://nodejs.org/zh-cn/download/ 安裝好後,檢測
比特幣BTC原始碼分析(0):環境搭建
一、Bitcoin編譯執行啟動過程 1、從Github上clone bitcoin原始碼 至本地 ~/go/src/github.com/bitcoin$git clone https://github.com/bitcoin/bitcoin.git Cloning into 'bi
Dubbo 原始碼分析系列之一環境搭建
環境搭建的步驟有哪些 依賴外部的環境 使用的開發工具 原始碼的拉取 結構大致介紹 1 依賴的外部環境 安裝JDK 安裝Git 安裝maven 這邊我們就不介紹怎麼安裝這些外部環境了,大家自行從安裝這些外部環境哈 2 使用的外部工具 編輯器使用 IntelliJ IDEA (簡單好用,快捷鍵豐富) G
Java內存泄漏分析系列之一:使用jstack定位線程堆棧信息
技術分享 對象 rgs 沒有 參數 導致 dump 單獨 src 原文地址:http://www.javatang.com 前一段時間上線的系統升級之後,出現了嚴重的高CPU的問題,於是開始了一系列的優化處理之中,現在將這個過程做成一個系列的文章。 基本概念 在對Jav
分析系列之一:使用jstack定位執行緒堆疊資訊
基本概念 在對Java記憶體洩漏進行分析的時候,需要對jvm執行期間的記憶體佔用、執行緒執行等情況進行記錄的dump檔案,常用的主要有thread dump和heap dump。 thread dump 主要記錄JVM在某一時刻各個執行緒執行的情況,以棧的形式顯示,是一個文字檔案。通過
spring4.1.8初始化原始碼學習三部曲之一:AbstractApplicationContext構造方法
這個demo的原始碼可以在github下載,地址和連結資訊如下表所示: 名稱 連結 備註 專案主頁 https://github.com/zq2599/blog_demos 該專案在GitHub上的主頁 git倉庫地址(https)
Opencv輪廓跟蹤演算法原始碼分析並實現單步除錯——icvFetchContour()
首先分析要除錯的圖的特性,使用畫圖工具手動定位到外輪廓的”起始點“在(77,126) 原圖如下: 呼叫的修改後的fushuwu_icvFetchContour()的實參如下: int main() { Mat img0 = imread("d:/test_co
spring+mybatis啟動NoClassDefFoundError異常分析三部曲之一:穩定重現問題
上一週,web專案在釋出的時候應用啟動失敗了,錯誤資訊如下: org.springframework.web.context.ContextLoader] - Context initialization failed java.lang.NoClassDef
Python 原始碼分析之執行時環境
python 執行時環境 執行環境是一個全域性的概念,而執行環境就是指棧幀 當執行時環境已經準備好的時候,執行第一行程式碼的函式就是 PyEval_EvalFrame 函式 PyObject * PyEval_EvalFrame(PyFrameObject *f) {
Spark原始碼分析之三:Stage劃分
Stage劃分的大體流程如下圖所示: 前面提到,對於JobSubmitted事件,我們通過呼叫DAGScheduler的handleJobSubmitted()方法來處理。那麼我們先來看下程式碼: // 處理Job提交的函式 pri
Yarn原始碼分析之MRAppMaster:作業執行方式Local、Uber、Non-Uber
基於作業大小因素,MRAppMaster提供了三種作業執行方式:本地Local模式、Uber模式、Non-Uber模式。其中, 1、本地Local模式:通常用於除錯; 2、Uber模式:為降低小作業延遲而設計的一種模式,所有任務,不
Spring Security原始碼分析十一:Spring Security OAuth2整合JWT
Json web token (JWT), 是為了在網路應用環境間傳遞宣告而執行的一種基於JSON的開放標準(RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登入(SSO)場景。JWT的宣告一般被用來在身份提供者和服務提供者
Spring Security原始碼分析十六:Spring Security專案實戰
Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Contr
Spring Security原始碼分析十五:Spring Security 頁面許可權控制
Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Contr