1. 程式人生 > >linux下除錯linux0.11

linux下除錯linux0.11

image直接用的這裡的http://oldlinux.org/Linux.old/Linux-0.11/images/

insight-6-8-1編譯

yum install ncurses-devel

./configure --disable-werror 

make

make install 

關鍵編譯bochs,要修改原始碼再編譯  參考這裡1樓點選開啟連結

./configure  --enable-gdb-stub

make

make install

0x0000a0ec in page_fault().的問題是由於bochs給GDB丟出了signal 0,另外GDB也不能處理signal 0 



該signal 0 由bochs的gdbstub.cc 檔案的函式debug_loop 的如下語句發出
  write_signal(&buf[1], 0); (bochs2.2 中gdbstub.cc 第475行)。
嘗試將該0值改為其他,並在GDB這邊來相應忽略,發現系統響應速度變慢,效果不佳。

嘗試另一種方法,在bochs的cpu.cc檔案的函式cpu_loop程式碼中修改一下(將第一個return 註釋掉 第156行),該問題不再出現,由於在該情況下不需要和GDB互動,因此係統響應的速度沒有變慢。暫時未發現其他問題。
  void
BX_CPU_C::cpu_loop(Bit32s max_instr_count)

{
  unsigned ret;
  bxInstruction_c iStorage BX_CPP_AlignN(32);
  bxInstruction_c *i = &iStorage;

#if BX_DEBUGGER
  BX_CPU_THIS_PTR break_point = 0;
#if BX_MAGIC_BREAKPOINT
  BX_CPU_THIS_PTR magic_break = 0;
#endif
  BX_CPU_THIS_PTR stop_reason = STOP_NO_REASON;
#endif

  if (setjmp( BX_CPU_THIS_PTR jmp_buf_env )) 

  { 
    // only from exception function can we get here ...
    BX_INSTR_NEW_INSTRUCTION(BX_CPU_ID);

#if BX_GDBSTUB
    if (bx_dbg.gdbstub_enabled) {
      //return; // 此處註釋掉,以免return後,後續處理髮送signal 0 給GDB
    }
#endif
  }

相關推薦

linux除錯linux0.11

image直接用的這裡的http://oldlinux.org/Linux.old/Linux-0.11/images/ insight-6-8-1編譯 yum install nc

linux環境編譯linux0.11核心

原部落格很老了,我並沒有編譯通過,網上大多編譯成功的是用gcc-4.3以下的版本,也有在gcc-4.6編譯成功的,折騰了幾天,這是我在網上找到的最新的資料了, 但是ubuntu源裡面最老的版本也是gcc4.7版本的,嘗試編譯低版本的gcc原始碼,但編譯不通過. 上面的

LINUX編譯c++11的程式碼

 C++11,(即ISO/IEC 14882:2011),是目前的C++程式語言的最新正式標準。它取代了第二版標準(第一版公開於1998年,第二版於2003年更新,分別通稱C++98以及C++03,兩者差異很小)。新的標準包含核心語言的新機能,而且擴充套件C++標準程式庫。C++11新標準

linux 除錯coredump檔案

1、coredump簡介 在linux後臺開發過程中可能一不小心出現訪問非法記憶體而產生段錯誤,面對段錯誤我們有時候可以通過列印定位,但那樣比較慢,我們可以利用linux提供了一種方法,當程式奔潰時核心會儲存程式執行的堆疊資訊到一個coredump檔案,我們可以通過gdb除錯這個coredump

如何使用加多寶(jdb)在linux除錯Java程式

畢業時寫了一段時間的C,那時候除錯使用gdb,後來轉了java,當時就想java程式怎麼除錯,找了一下,果然,那就是jdk自帶的jdb windows裡是這樣的 Linux下是這樣的 一般我在linux下來除錯Java程式  好,那麼,問題來了,這玩意怎麼用?有好幾種玩法 第一種玩

jlink linux除錯

1.去官網 下載 v4.80的linux版本的 驅動,我的是feora, 下載rpm包,直接安裝,路徑 是  /opt/SEGGER 2.連上 jlink,開啟 JlinkGDBServer 3.arm-linux-insight開啟,就可是除錯了, 編譯的時候,s,c檔案

linux除錯方法記錄

1、segment fault segment fault是幾乎多有C程式設計師都會碰到的問題,多為記憶體問題,因為glibc庫中基本所有的函式都預設形參指標是非空的,這樣以下原因就可能導致段錯誤: (1)引用一個包含非法值的指標(當然包括空指標)。 (2)未得到正確的許可

ubutu14 編譯linux0.11核心

下載 linux-0.11-gdb-rh9-050619.tar.gz 程式碼,以它為藍本編譯。 1. boot/head.s:45: Error: unsupported instruction `mov' 原因: 這是因為本機系統為64位, 因此需要給所有Makefi

Linux除錯段錯誤的方法[Segmentation Fault]--GDB

4. 段錯誤的除錯方法 4.1 使用printf輸出資訊 這個是看似最簡單但往往很多情況下十分有效的除錯方式,也許可以說是程式設計師用的最多的除錯方式。簡單來說,就是在程式的重要程式碼附近加上像printf這類輸出資訊,這樣可以跟蹤並打印出段錯誤在程式碼中可能出現的位置。為了方便使用這種方法,可以使用

【GDB】Linux除錯程式

引言:GDB是GUN釋出的一款功能強大的程式除錯工具。 * GDB主要完成下面三個方面的功能:  1、啟動被除錯的程式; 2、指定程式在某個位置暫停; 3、當程式暫停時,可以檢查程式的狀態(包括變數值等)。 * GDB使用方法: 1、編譯生成的可執行檔案: gcc

bochs編譯linux0.11 (轉)

/********************************************轉自:http://blog.csdn.net/s_ware/archive/2007/03/22/1537088.aspx*******************************

windowsbochs和linux0.11除錯環境的建立

核心映象使用已經做好的,這樣也不需要編譯。 載入程式除錯軟體bochs,跟配套的linux0.11核心img(這裡面有一個2.1.1版本已經可以使用的,所以第一個可以不用下)下載地址分別是: 除錯環境的的建立 下載linux-0.11-devel-040329.zip,

Tomcat學習總結(11)——Linux的Tomcat安全優化

app span must 以及 站點 with rip web.xml dev 1、web.xml配置及修改: 站點默認主頁: <welcome-file-list> <welcome-file>index.html</welcome-fil

linux終端11選5平臺出租常用命令和vi命令修改文件及保存的使用方法

首開 mman bin 軟件包管理 系統啟動 左右移動 包含 地方 執行 首先11選5平臺出租 haozbbs.com Q1446595067介紹一下Ubuntu下各個目錄的一般作用: /這就是根目錄,一臺電腦有且只有一個根目錄,所有的文件都是從這裏開始的。舉個例子:當

linux 安裝 Cisco Packet Tracer 7.11以及一些註意

家目錄 sta 註意 qt5 .html csdn 依賴 clas pac https://blog.csdn.net/qq_35882901/article/details/77652571 https://linux.cn/article-5576-1.html 開啟登

Linux安裝MySQL資料庫mysql-5.7.11

Linux下安裝MySQL資料庫(壓縮包方式安裝) https://www.cnblogs.com/xiaotao726/p/6562265.html PS:9、建立In ln -s /usr/local/mysql/ /usr/bin/ 連線資料庫時會顯示:[[email protecte

Linux安裝MySQL數據庫mysql-5.7.11

tmp 方式 socket 解決問題 ket deb 方式安裝 linux 安裝mysql Linux下安裝MySQL數據庫(壓縮包方式安裝) https://www.cnblogs.com/xiaotao726/p/6562265.html PS:9、創建In ln -s

嵌入式ARM在Linux更改除錯串列埠

By Toradex秦海 1). 簡介 在基於嵌入式ARM開發產品的時候,有時候由於ARM處理器UART數量的限制,我們需要將系統預設的除錯串列埠列印資訊關閉或者轉移到其他串列埠上面去,本文即演示更改uboot和linux kernel 除錯串列埠的過程示例。   本文所演

Linux使用gdb除錯C/C++程式

在筆者工作實踐中,使用gdb除錯C++程式和除錯C程式,他們稍有不同,下面是使用總結。 一、編譯選項 -g         生成除錯資訊 -gstabs+   以stabs格式生成除錯資訊,並且包含僅供gdb使用的額外除錯資訊生成除

linuxgdb除錯檢視原始碼

 GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現GDB這個除錯工具有比VC、BCB的圖形化偵錯程式更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。 &nb