gpt4 book ai didi

linux - 通过评估 CPU 寄存器找出系统锁定时正在执行哪个 Linux 进程

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:56 27 4
gpt4 key购买 nike

我需要找出当我的 Linux (Debian) 系统挂起(x86 平台)时正在执行什么。我在系统锁定之前成功提取了以下信息:

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指向的页表的偏移量。

有人可以帮我一下吗?

最佳答案

您从哪里提取信息?

如果这是用户模式崩溃/锁定,则该信息可能来自核心转储(您可以即时转储核心,而不必杀死主题)

在这种情况下,请使用gdb/usr/bin/myprogrambinary corefile

并使用 gdb 命令导航bt信息线程信息共享线程应用所有 bt full

通过对系统上安装的各种库进行调试符号,所有这些的有用性将大大提高(根据您的发行版,安装相关的 *-dbg 软件包)

关于linux - 通过评估 CPU 寄存器找出系统锁定时正在执行哪个 Linux 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633393/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com