

(Lab 4+) Since GDB is attached to the virtual machine as a whole, The right user binary library functions will be linked atĭifferent EIPs in different binaries and GDB won't know any Symbols are already included in each user binary). (libraries are statically linked into JOS user binaries, so those o files, as those haven't been relocated by the linker In its ELF binary, so you can load it using symbol-file The symbol table for a user environment is Table to use with the symbol-file command, since itĬan only use one symbol table at a time. You can symbolically debug user code, just like you can kernelĬode, but you have to tell GDB which symbol You can start JOS with a specific user environment using make run- name (or you can edit Things you need to watch out for, since GDB doesn't know that there'sĪ distinction between multiple user environments, or between user and GDB also lets you debug user environments, but there are a few

(Lab 4+) To debug multiple CPUs, use GDB's thread-related commands Note that these commands only display the current To debug virtual memory issues, try the QEMU monitor commands info mem (for a high-level If you're getting unexpected interrupts, exceptions, or tripleįaults, you can ask QEMU to generate a detailed log of interrupts See the GDB referenceīelow for some commands that are useful when debugging kernels. Use the qemu-gdb target (or its qemu-gdb-nox variant) to make
