When we share custom built kernel, It is common to give without debug info.
Similar to sudo apt-get install linux-image-$(uname -r)-dbgsym
, I would like to create separate debug info file for custom built kernel.
Here and here they explained generally. I request to share knowledge on creating separate debug info file for entire linux kernel.
For sample program
$ gcc -g calc.c
$ ls -l
total 16
-rwxrwxr-x 1 jeyaram jeyaram 8424 Apr 8 09:44 a.out
-rw-rw-r-- 1 jeyaram jeyaram 246 Apr 8 09:32 calc.c
$ objcopy --only-keep-debug a.out a.debug
$ gcc calc.c -------------> compiling without debug info (skipped 'strip')
$ ls -l
total 20
-rwxrwxr-x 1 jeyaram jeyaram 4736 Apr 8 09:45 a.debug
-rwxrwxr-x 1 jeyaram jeyaram 7200 Apr 8 09:52 a.out
-rw-rw-r-- 1 jeyaram jeyaram 246 Apr 8 09:32 calc.c
$ objcopy --add-gnu-debuglink=a.debug a.out
$ gdb a.out
GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/jeyaram/JJJ/debug_info_analysis/sample_c_test/a.out...Reading symbols from /home/jeyaram/JJJ/debug_info_analysis/sample_c_test/a.debug...done.
done.
But while trying with vmlinux
$ objcopy --only-keep-debug vmlinux vmlinux.debug
objcopy: Unable to recognise the format of the input file `vmlinux'
Missing something ???
vmlinux
is a binary blob. The file you're looking for is vmlinux.bin
(which is the elf intermediate).
Works like charm:
objcopy --only-keep-debug vmlinux.bin vmlinux.debug