<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux內核調試器內幕(2)

Linux內核調試器內幕(2)

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

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

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

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

[0]kdb> [defcmd] endefcmd [/code:1:6ddc15f4ad]
例如,可以定義一個(gè)(簡(jiǎn)單的)新命令 hari,它顯示從地址 0xc000000 開(kāi)始的一行內存、顯示寄存器的內容并轉儲堆棧:
[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]
該命令的輸出會(huì )是:
[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 命令(假如體系結構支持使用硬件寄存器)來(lái)應用讀寫(xiě)斷點(diǎn)。這意味著(zhù)每當從某個(gè)特定地址讀取數據或將數據寫(xiě)入該地址時(shí),我們都可以對此進(jìn)行控制。當調試數據/內存毀壞問(wèn)題時(shí)這可能會(huì )極其方便,在這種情況中您可以用它來(lái)識別毀壞的代碼/進(jìn)程。
示例
[code:1:6ddc15f4ad]每當將四個(gè)字節寫(xiě)入地址 0xc0204060 時(shí)就進(jìn)入內核調試器:
[0]kdb> bph 0xc0204060 dataw 4
在讀取從 0xc000000 開(kāi)始的至少兩個(gè)字節的數據時(shí)進(jìn)入內核調試器:
[0]kdb> bph 0xc000000 datar 2[/code:1:6ddc15f4ad]
[size=18:6ddc15f4ad]結束語(yǔ)[/size:6ddc15f4ad]
對于執行內核調試,KDB 是一個(gè)方便的且功能強大的工具。它提供了各種選項,并且使我們能夠分析內存內容和數據結構。最妙的是,它不需要用另一臺機器來(lái)執行調試。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>