How to build kernel debug info as separate file?

浪子不回头ぞ 提交于 2020-05-28 07:48:50

问题


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 ???


回答1:


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



回答2:


arm-linux-gnueabi-objcopy --only-keep-debug vmlinux vmlinux.debug will works fine.

$ ls -l vmlinux*
-rwxrwxr-x 1 jeyaram jeyaram   7871108 Apr  8 11:24 vmlinux
-rwxrwxr-x 1 jeyaram jeyaram  92520922 Apr  8 11:21 vmlinux.debug
-rw-rw-r-- 1 jeyaram jeyaram 162974220 Apr  7 14:16 vmlinux.o


来源:https://stackoverflow.com/questions/22910537/how-to-build-kernel-debug-info-as-separate-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!