GDB调试之跨平台驱动调试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GDB调试之跨平台代码调试

一个问题引发的思考:

问题描述:使用交叉编译工具(mips64-nlm-linux-gcc) 将某一段程序编译为目标开发板上所可以使用的可执行程序后,在目标开发板上报了如下的错误:

乍一看很明显的是oops(kernel panic)了

那么我们应该如何去定位这种问题并解决呢?那就当然要用到我们的GDB了!不过是需要支持mips架构的gdb而已

一、gdb跨平台环境搭建

首先我们可以使用如下命令来查看Debian中对于体系架构的一张描述表

cat /usr/share/dpkg/archtable

#

i486-linux-gnu i386

ia64-linux-gnu ia64

alpha-linux-gnu alpha

x86_64-linux-gnu amd64

arm-linux-gnu arm

arm-linux-gnueabi armel

hppa-linux-gnu hppa

mips-linux-gnu mips

mipsel-linux-gnu mipsel

powerpc-linux-gnu powerpc

s390-linux-gnu s390

sparc-linux-gnu sparc

i486-gnu hurd-i386

i486-kfreebsd-gnu kfreebsd-i386

x86_64-kfreebsd-gnu kfreebsd-amd64

对于我们当前来说:我们仅仅需要

x86_64-linux-gnu amd64

mips-linux-gnu mips

明确了我们的需求,就开始生成我们自己的编译器了!

1、创建一个目录并且下载gdb源码到此目录

目录自己选择(此处为opt) //注意需要切换root

mkdir /opt/build-gdb

apt-get source gdb

2、根据需求配置我们的configure

./configure --enable-targets=x86_64-linux-gnu,mips-linux-gnu

3、编译

make

4、将生成的gdb复制到/usr/sbin下

cp gdb/gdb /usr/sbin/gdb-all

以上操作就可以完成跨平台gdb调试的基本安装!

二、如何使用

我们回到我们的问题的最开始:

如何定位?

1、gdb-all vmlinux (这个为开发板上所使用的vmlinx)

2、设置目标架构

set architecture mips:isa64r2

3、定位错误

info line *0x我们上述oops的epc地址

info line *0xffffffff804c120c

定位结果:第293行

Line 293 of "drivers/tl_modules/xlp_module/command_kernel/command_kernel.c"

starts at address 0xffffffff804c1204

and ends at 0xffffffff804c1238 .

注意:使用info line 应首先确定DEBUG_INFO 开启(附1)

也可以查看反汇编

x/i 0xffffffff804c120c (此为查看一行,多行格式为x$numberi/address)

附1:开启DEBUG_INFO

在内核根目录执行make menucofig

Symbol: DEBUG_INFO_REDUCED [=y]

│Type : boolean

│Prompt: Reduce debugging information

│Defined at lib/Kconfig.debug:779

│Depends on: DEBUG_INFO [=y]

│Location:

│-> Kernel hacking

│(1) -> Compile the kernel with debug info (DEBUG_INFO [=y])

将上述DEBUG_INFO 开启即可!

keven

相关文档
最新文档