Chinaunix

标题: 如何给kernel解压缩部分加上"-g"选项? [打印本页]

作者: ytsmtipe    时间: 2012-12-26 20:19
标题: 如何给kernel解压缩部分加上"-g"选项?
各位大侠,兄弟准备调试下kernel解压缩部分的代码,可是我发现在"make menuconfig"里选择了"compile the kernel with debug info" 选项后kernel部分确实有了debug信息,但是解压缩部分的代码并没有包含调试信息,请问如何给kernel解压缩部分加上调试选项?谢谢!
我用的平台是:arm1176.
kernel version:"linux-linaro-3.4-2012.05-1".
作者: 灌水菜鸟    时间: 2012-12-27 14:16
啊?!这块的问题?这块出问题该怎么调啊?没有想过啊!

加-g倒是简单,找到的源文件,在Makefile里面加编译选项就OK了。
作者: ytsmtipe    时间: 2012-12-27 14:51
新进展,找到了相关的Makefile了,我在"./arch/arm/Makefile“的如下一行加上的:
arch-$(CONFIG_CPU_32v6)         :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
改为
arch-$(CONFIG_CPU_32v6)         :=-D__LINUX_ARM_ARCH__=6 -O1 -g $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
另外,我发现在调用objcopy由arch/arm/boot/compressed/vmlinux生成arch/arm/boot/zImage时的选项"-S"会删除相关的调试信息,所以要把"./arch/arm/Makefile"里的"OBJCOPYFLAGS"选项中的"-S"选项去掉,我同时把“-R .comment"选项也去掉了,这样就可以在调试时看到调试信息了,在uboot里调用"bootm"时会停在第一条指令的地方0x8000,这时调用
"add-symbol-file ./arch/arm/boot/compressed/vmlinux 0x8000"就可以看到相应的调试信息了。
但是这时又出现了一个新的问题:
我发现汇编指令和相应的源代码对不上,会相差十几行左右,大家遇到过这种情况吗?请帮忙指点下,谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2