如何在调试Linux内核时避免“优化出”
问题描述:
我正在使用两台Linux虚拟机在Mac(VMWare Fusion)上调试Linux内核。如何在调试Linux内核时避免“优化出”
我已经安装kernel-debuginfo-3.10.0-327.36.3.el7.x86_64
和debugStub的作品。
然后我添加了一个断点fchown
系统调用,它打破了,
Breakpoint 10, SYSC_fchown (group=0, user=0, fd=<optimized out>) at fs/open.c:650
但我不能读fd.file
,该值被优化了,
有什么建议吗?
答
但我不能fd.file读取,该值被优化了
这种情况经常在调试优化的代码时。
你最好的选择可能是disassemble
的例程。对于像这样的小程序,通常不难确定哪个寄存器中的数值,然后可以将其转换为正确的类型。例如。如果值在$r9
:
(gdb) p *(struct file *)$r9
您应该使用较低的优化和'-g3'来构建。为了优化,使用“-O1”或“-O0”。使用'-g3'是因为它提供了最大的调试信息,包括符号常量和定义。 – jww