中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Linux內(nèi)核調(diào)試器內(nèi)幕(2)

        Linux內(nèi)核調(diào)試器內(nèi)幕(2)

        作者: 時間:2007-05-08 來源:網(wǎng)絡(luò) 收藏
        我們可以看到 rmqueue() 被 __alloc_pages 調(diào)用,后者接下來又被 _alloc_pages 調(diào)用,以此類推。
        每一幀的第一個雙字(double word)指向下一幀,這后面緊跟著調(diào)用函數(shù)的地址。因此,跟蹤堆棧就變成一件輕松的工作了。

        go 命令可以有選擇地以一個地址作為參數(shù)。如果您想在某個特定地址處繼續(xù)執(zhí)行,則可以提供該地址作為參數(shù)。另一個辦法是使用 rm 命令修改指令指針寄存器,然后只要輸入 go。如果您想跳過似乎會引起問題的某個特定指令或一組指令,這就會很有用。但是,請注意,該指令使用不慎會造成嚴重的問題,系統(tǒng)可能會嚴重崩潰。

        您可以利用一個名為 defcmd 的有用命令來定義自己的命令集。例如,每當遇到斷點時,您可能希望能同時檢查某個特殊變量、檢查某些寄存器的內(nèi)容并轉(zhuǎn)儲堆棧。通常,您必須要輸入一系列命令,以便能同時執(zhí)行所有這些工作。defcmd 允許您定義自己的命令,該命令可以包含一個或多個預(yù)定義的 KDB 命令。然后只需要用一個命令就可以完成所有這三項工作。其語法如下:
        [code:1:6ddc15f4ad][0]kdb> defcmd name usage help

        [0]kdb> [defcmd] type the commands here

        [0]kdb> [defcmd] endefcmd [/code:1:6ddc15f4ad]
        例如,可以定義一個(簡單的)新命令 hari,它顯示從地址 0xc000000 開始的一行內(nèi)存、顯示寄存器的內(nèi)容并轉(zhuǎn)儲堆棧:
        [code:1:6ddc15f4ad][0]kdb> defcmd hari no arguments needed

        [0]kdb> [defcmd] md 0xc000000 1

        [0]kdb> [defcmd] rd

        [0]kdb> [defcmd] md %ebp 1

        [0]kdb> [defcmd] endefcmd [/code:1:6ddc15f4ad]
        該命令的輸出會是:
        [code:1:6ddc15f4ad][0]kdb> hari

        [hari]kdb> md 0xc000000 1

        0xc000000 00000001 f000e816 f000e2c3 f000e816

        [hari]kdb> rd

        eax = 0x00000000 ebx = 0xc0105330 ecx = 0xc0466000 edx = 0xc0466000
        ....
        ...

        [hari]kdb> md %ebp 1

        0xc0467fbc c0467fd0 c01053d2 00000002 000a0200

        [0]kdb> [/code:1:6ddc15f4ad]

        可以使用 bph 和 bpha 命令(假如體系結(jié)構(gòu)支持使用硬件寄存器)來應(yīng)用讀寫斷點。這意味著每當從某個特定地址讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入該地址時,我們都可以對此進行控制。當調(diào)試數(shù)據(jù)/內(nèi)存毀壞問題時這可能會極其方便,在這種情況中您可以用它來識別毀壞的代碼/進程。
        示例
        [code:1:6ddc15f4ad]每當將四個字節(jié)寫入地址 0xc0204060 時就進入內(nèi)核調(diào)試器:
        [0]kdb> bph 0xc0204060 dataw 4
        在讀取從 0xc000000 開始的至少兩個字節(jié)的數(shù)據(jù)時進入內(nèi)核調(diào)試器:
        [0]kdb> bph 0xc000000 datar 2[/code:1:6ddc15f4ad]
        [size=18:6ddc15f4ad]結(jié)束語[/size:6ddc15f4ad]
        對于執(zhí)行內(nèi)核調(diào)試,KDB 是一個方便的且功能強大的工具。它提供了各種選項,并且使我們能夠分析內(nèi)存內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。最妙的是,它不需要用另一臺機器來執(zhí)行調(diào)試。



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉