linux - 调试linux内核时如何避免 "optimized out"

标签 linux debugging gdb kernel remote-debugging

我正在使用两个 Linux 虚拟机在 Mac (VMWare Fusion) 上调试 Linux 内核。

我已经安装了 kernel-debuginfo-3.10.0-327.36.3.el7.x86_64 并且 debugStub 可以正常工作。

enter image description here

然后我在 fchown 系统调用上添加了一个断点,它中断了,

Breakpoint 10, SYSC_fchown (group=0, user=0, fd=<optimized out>) at fs/open.c:650

但是我无法读取fd.file,这个值被优化掉了,

enter image description here

有什么想法吗?

最佳答案

But I can't read fd.file, the value is optimized out

调试优化代码时经常会发生这种情况。

您最好的选择可能是反汇编 例程。对于像这样的小例程,通常不难判断值在哪个寄存器中,然后就可以转换为正确的类型。例如。如果值在 $r9 中:

(gdb) p *(struct file *)$r9

关于linux - 调试linux内核时如何避免 "optimized out",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45645515/

相关文章:

linux - 无法在 Heritrix3 Web Crawler 中运行并行作业

linux - 在 Linux 上以另一个用户身份运行脚本

java - 如何在 Eclipse 中调试 Maven 项目?

Javascript,有没有办法调试/找出特定元素属性是从哪里继承的?

c++ - 调试 C++ 程序时出现奇怪的 gdb 消息

linux - 如何在子文件的第 2 列中 grep 包含值范围(-6 到 -7)的文件名?

r - 调试所有功能

c++ - GDB 可以调试 C++ lambdas 吗?

c : gdb : Overwriting and freeing too much memory

linux - 如何在 Yocto 中为评估板(具有制造商的预设内核)设置抢占式实时内核?