我正在嘗試調試xv6,使用qemu模擬器,使用gdb內核。GDB不會識別新文件/行
如何,gdb不會識別我對文件做的任何附加操作。例如,它不會識別新的文件,甚至新的生產線在現有的文件,例如:
在文件x86.hi添加anouther功能,這是代碼(i已經添加CAS):
static inline void
lcr3(uint val)
{
asm volatile("movl %0,%%cr3" : : "r" (val));
}
static inline uint
cas(volatile int *addr,int expected, int newval)
{
uint flags;
uint zf;
asm volatile("movl %0,%%eax;lock;cmpxchg %2,%3;jne afterChange;movl %%eax,%0;afterChange:;pushfl; popl %1":"+m"(*addr),"=r"(flags):"r"(expected),"r"(newval):"%eax");
zf = (flags >> 6) & 1;
return zf;
}
GDB會認識LCR3,但不會承認CAS,但是,當我真正搜索文件,我可以找到行:
(gdb) list lcr3
138 return val;
139 }
140
141 static inline void
142 lcr3(uint val)
143 {
144 asm volatile("movl %0,%%cr3" : : "r" (val));
145 }
146
147 static inline uint
(gdb) list
148 cas(volatile int *addr,int expected, int newval)
149 {
150 uint flags;
151 uint zf;
152 asm volatile("movl %0,%%eax;lock;cmpxchg %2,%3;jne afterChange;movl %%eax,%0;afterChange:;pushfl; popl %1":"+m"(*addr),"=r"(flags):"r"(expected),"r"(newval):"%eax");
153 //zf = (flags >> 6) & 1;
154 zf = flags;
155 return zf;
156 }
157
我使用此生成的文件(基本XV6生成文件): https://github.com/mit-pdos/xv6-public/blob/master/Makefile
會很樂意提供任何幫助。謝謝。
想必,它仍然固定在舊的。 –
我該如何解決這個問題?我試圖尋找修改的gdb文件,或者甚至重新安裝gdb –
'make clean'。重新編譯。 –