2013-04-17 53 views
2

我是linux內核的新手。 徘徊如何瀏覽完整的流程,從CPU的通電。 BIOS/ROM代碼的基本思路。用於調試linux內核的工具是什麼?

我可以有一些工具來調試完整的內核嗎? 或 原始代碼瀏覽是否可取?

+0

閱讀也http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html和http://www.linuxhomenetworking.com/wiki/index .php/Quick_HOWTO _:_ Ch07 _:_ The_Linux_Boot_Process –

+0

是否符合最新的內核? – San

+0

可能是的。爲什麼不呢? –

回答

2

如果你的意圖是理解Linux內核的整個流程,在QEMU上運行Linux內核可以很容易地瞭解Linux的工作方式。 ESP。您可以模擬很多沒有真正硬件的CPU類型。或者user mode Linux怎麼樣?

This document可以有助於在QEMU上調試內核。

0

剛加入,Linux內核不太適合調試。 Linus Torvalds曾經表示,他支持在Linux中進行內核調試,因爲它會導致代碼寫得不好。 我用kdbg,但是我沒有覺得它非常有用,我建議使用printk來調試內核oldschool的方式。

2

以下工具可以幫助你調試Linux內核

Dynamic Probes是Linux的流行的調試工具,它由IBM開發的一個。該工具允許在用戶和內核空間的幾乎任何位置放置「探測器」。探測包含一些代碼(用專門的,面向堆棧的語言編寫),當控制點到達給定點時執行。資源有關dprobes/Kprobes的下面列出

Linux Trace Toolkit是一個內核補丁和一組允許在內核中跟蹤事件的相關實用程序。跟蹤包括時間信息,並且可以創建關於給定時間段內發生的事情的合理完整圖像。 LTT的,LTT Viewer和LTT接着資源代

MEMWATCH是一個開源存儲器錯誤檢測的工具。它通過在gcc語句中定義MEMWATCH並向我們的代碼添加一個頭文件來工作。通過這個我們可以跟蹤內存泄漏和內存損壞。對於MEMWATCH

ftrace資源是Linux內核的一個很好的跟蹤框架。 ftrace跟蹤內核的內部操作。這個工具包含在2.6.27的Linux內核中。通過各種跟蹤器插件,ftrace可以針對不同的靜態跟蹤點,如調度事件,中斷,內存映射I/O,CPU電源狀態轉換以及與文件系統和虛擬化相關的操作。此外,內核函數調用的動態跟蹤是可用的,可選地通過使用globs來限制函數的子集,並且可以生成調用圖並提供堆棧使用。您可以在https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdf

ltrace找到ftrace的一個很好的教程是在Linux中的調試工具,用於顯示用戶空間應用程序對共享庫的調用。該工具可用於跟蹤任何動態庫函數調用。它攔截並記錄被執行的進程調用的動態庫調用以及該進程接收到的信號。它還可以攔截和打印程序執行的系統調用。

KDB是Linux內核的內核中的調試器。 KDB遵循簡單的殼式界面。我們可以使用它來檢查內存,註冊,處理列表,dmesg,甚至設置斷點以停止某個位置。通過KDB,我們可以設置斷點並執行一些基本的內核運行控制(雖然KDB不是源級調試器)。關於KDB

KGDB幾個方便的資源,旨在作爲Linux內核源代碼級調試。它與gdb一起用於調試Linux內核。使用kgdb需要兩臺機器。其中一臺機器是開發機器,另一臺是目標機器。要調試的內核在目標機器上運行。期望的是,gdb可以用來「入侵」內核來檢查內存,變量並查看調用堆棧信息,類似於應用程序開發人員使用gdb調試應用程序的方式。可以在內核代碼中放置斷點並執行一些有限的執行步驟。關於KGDB幾個方便的資源