2017-08-12 53 views
1

我正在使用兩臺Linux虛擬機在Mac(VMWare Fusion)上調試Linux內核。如何在調試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

有什麼建議嗎?

+0

您應該使用較低的優化和'-g3'來構建。爲了優化,使用「-O1」或「-O0」。使用'-g3'是因爲它提供了最大的調試信息,包括符號常量和定義。 – jww

回答

0

但我不能fd.file讀取,該值被優化了

這種情況經常在調試優化的代碼時。

你最好的選擇可能是disassemble的例程。對於像這樣的小程序,通常不難確定哪個寄存器中的數值,然後可以將其轉換爲正確的類型。例如。如果值在$r9

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