Debugging a driver using gdb

Updated: April 19, 2023

If you want to use gdb to debug a driver, you first have to make sure that your source is compiled with debugging information included.

Ensure your driver code is in hardware/devnp, then do the following:

# cd hardware
# make CPULIST=x86_64 clean
# make CPULIST=x86_64 CCOPTS=-O0 DEBUG=-g install

Now that you have a debug version, you can start gdb and set a breakpoint at main() in the io-pkt binary.

Note: Don't forget to specify your driver in the arguments, and ensure that the PATH and LD_LIBRARY_PATH environment variables are properly set up.

After hitting the breakpoint in main(), do a sharedlibrary command in gdb. You should see libc loaded in. Set a breakpoint in dlsym(). When that's hit, your driver should be loaded in, but io-pkt hasn't done the first callout into it. Do a set solib-search-path and add the path to your driver, and then do a sharedlibrary again. The debugger should load the symbols for your driver, and then you can set a breakpoint where you want your debugging to start.