0

当我们共享自定义构建的内核时,通常不提供调试信息。

与 类似sudo apt-get install linux-image-$(uname -r)-dbgsym,我想为自定义构建的内核创建单独的调试信息文件。

他们在这里这里进行了一般性的解释。我请求分享为整个 linux 内核创建单独的调试信息文件的知识。

对于示例程序

$ 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.

但是在尝试使用 vmlinux 时

$ objcopy --only-keep-debug vmlinux vmlinux.debug
objcopy: Unable to recognise the format of the input file `vmlinux'

遗漏了什么 ???

4

2 回答 2

3

vmlinux是一个二进制 blob。您要查找的文件是vmlinux.bin(即 elf 中间文件)。

像魅力一样工作:

objcopy --only-keep-debug vmlinux.bin vmlinux.debug
于 2014-04-08T05:34:38.090 回答
1

arm-linux-gnueabi-objcopy --only-keep-debug vmlinux vmlinux.debug会正常工作。

$ 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
于 2014-04-08T05:56:40.073 回答