问题
I'm doing an OS class that's based on xv6 and I wrote a program that needs to run on it.
I know that I can debug kernel code with make qemu-gdb but I'm not sure how to debug my own user program.
Lets say I want to debug cat, how would I go about doing that?
Thanks
P.S. isn't there an xv6 tag? should this question even go here?
回答1:
file cat, break main, continue
semi reference running and debugging xv6
回答2:
From the xv6 top-level dir:
Run the emulator in debug mode (assuming no X11):
make qemu-nox-gdbIn other terminal just run the debugger loading the kernel symbols with:
gdb kernelThis is important, otherwise the debugger will be confused between kernel and and user program symbols, for examplemain()From the gdb interface run:
(gdb) target remote localhost:26000where 26000 is the TCP port that the step #1 report at the end (this might change).Load the user exec with
(gdb)file user_programPlace a breakpoint
(gdb) break mainand continue with(gdb) continueetc...
来源:https://stackoverflow.com/questions/10534798/debugging-user-code-on-xv6-with-gdb