Roland McGrath wrote: >> 2) The path to the debug info is wrong anyway. In fact, there _is_ >> no path info in the .gnu_debuglink section of the kernel modules: > > They're not supposed to have directory names. Try elfutils tools, or gdb. > They handle separate debuginfo well. e.g. eu-addr2line -k 0x... is nice. > We don't yet have disassembly tools in elfutils, unfortunately. Well, addr2line works because you point it directly to the .ko.debug file: $ eu-addr2line -e ahci.ko.debug 0x0 drivers/ata/ahci.c:479 > > gdb will deal well with a .ko and find its debug info, and has disassembly > and source info. It doesn't have an interleaved output format AFAIK, though. > But how could gdb put the two separate files together when there is no connection between them? How could it possibly know to go from: /lib/modules/2.6.20-1.2925.fc6/kernel/drivers/ata/ahci.ko to /usr/lib/debug/lib/modules/2.6.20-1.2925.fc6/kernel/drivers/ata/ahci.ko.debug without the full path name in the .gnu_debuglink section of the module? The debug info file does have the full (and correct) pathname of the source: comp_dir "/usr/src/debug/kernel-2.6.20/linux-2.6.20.i686" This still isn't quite right; it should really be: "/usr/src/debug/kernel-2.6.20/linux-2.6.20-1.2925.i686" But that is really where the installer puts the files, so it's just a minor packaging problem. (You can only have one 2.6.20 kernel source tree installed for debugging using the current naming convention.) > I've considered writing an "unstrip" to paste stripped and .debug file back > together so you can use them with dumber tools. > Yeah, that would be nice.