我需要找出當我的Linux(Debian)系統掛起時(x86平臺)執行什麼操作。我設法提取之前的系統鎖定了以下信息:當通過評估CPU寄存器鎖定系統時,查明正在執行哪個Linux進程
es: 0x7B
cs: 0x73
ss: 0x7B
ds: 0x7B
fs: 0x0
gs: 0x33
ldtbase: 0x0
tr: 0x80
dr7: 0x400
dr6: 0xFFFF0FF0
eax: 0xBFBDE820
ecx: 0xA908F9A0
edx: 0xB708A000
ebx: 0xB71B5278
esp: 0xBFBDE730
ebp: 0xBFBDE838
esi: 0x9D36B58
edi: 0x9D50BB8
eip: 0xB71B13E8
eflags: 0x203206
cr3: 0x1E9DE000
cr0: 0x80050033
從段寄存器的值,我知道,當Linux的掛起,這是對用戶空間模式。我想知道的是哪個進程/庫導致了崩潰,並且理想的是它的確切部分。
通過查看CR3和EIP,我應該可以得到這些信息,但我感到困惑。據我所知,虛擬地址0xB71B13E8是相對於使用的頁表(0x1E9DE000)。 現在,指令指針指向一個物理地址,對吧?我想我應該將這個(EIP值)轉換爲一個虛擬地址,它將成爲CR3指向的頁表的偏移量。
任何人都可以請幫我一下嗎?
你是如何獲得這些信息的? – 2011-04-12 10:11:27