qemuエミュレータを使用してgdbカーネルでxv6をデバッグしようとしています。GDBは新しいファイル/行を認識しません
これまでどおり、gdbはファイルに対してどのような追加も認識しません。例えば、それは文句を言わない、たとえば、新しいファイル、または既存のファイルでも、新しい行を認識:
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;
}
:
ファイルx86.hiにanouther機能を追加した、これはコード(私は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のmakefile): https://github.com/mit-pdos/xv6-public/blob/master/Makefile
gdbが、私は実際にファイルを検索するときしかし、私はラインを見つけることができ、lcr3を認識するが、文句を言わないCASを認識します
ご協力いただき誠にありがとうございます。ありがとうございました。
おそらく、それはまだ古いものに固定されています。 –
どうすれば修正できますか?私は変更されたgdbファイルを探したり、gdbを再インストールしようとしました –
'make clean'。再コンパイル。 –