/usr/lib/grub/i386-pc/gdb_grub is in grub-pc-dbg 2.02~beta2-36ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ###
### Load debuging information about GNU GRUB 2 modules into GDB
### automatically. Needs readelf, Perl and gmodule.pl script
###
### Has to be launched from the writable and trusted
### directory containing *.image and *.module
###
### $Id: .gdbinit,v 1.1 2006/05/14 11:38:08 lkundrak Exp $
### Lubomir Kundrak <lkudrak@skosi.org>
###
# Add section numbers and addresses to .segments.tmp
define dump_module_sections
set $mod = $arg0
# FIXME: save logging status
set logging file .segments.tmp
set logging redirect on
set logging overwrite off
set logging on
printf "%s", $mod->name
set $segment = $mod->segment
while ($segment)
printf " %i 0x%lx", $segment->section, $segment->addr
set $segment = $segment->next
end
printf "\n"
set logging off
# FIXME: restore logging status
end
document dump_module_sections
Gather information about module whose mod structure was
given for use with match_and_load_symbols
end
# Generate and execute GDB commands and delete temporary files
# afterwards
define match_and_load_symbols
shell perl gmodule.pl <.segments.tmp >.loadsym.gdb
source .loadsym.gdb
shell rm -f .segments.tmp .loadsym.gdb
end
document match_and_load_symbols
Launch script, that matches section names with information
generated by dump_module_sections and load debugging info
apropriately
end
###
define load_module
dump_module_sections $arg0
match_and_load_symbols
end
document load_module
Load debugging information for module given as argument.
end
define load_all_modules
set $this = grub_dl_head
while ($this != 0)
dump_module_sections $this
set $this = $this->next
end
match_and_load_symbols
end
document load_all_modules
Load debugging information for all loaded modules.
end
###
set confirm off
file kernel.exec
target remote :1234
# inform when module is loaded
break grub_dl_add
commands
silent
load_module mod
cont
end
|