GDB调试之跨平台驱动调试.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GDB 调试之跨平台代码调试 一个问题引发的思考: 问题描述:使用交叉编译工具(mips64-nlm-linux-gcc将)某一段程序编译为目标开发板上所可以使用的可执行程序后,在目标开发板上报了如下的错误: 乍一看很明显的是oops(kernel pan了ic) 那么我们应该如何去定位这种问题并解决呢?那就当然要用到我们的GDB 了!不过是需要支持 mips 架构的gdb 而已 一、gdb 跨平台环境搭建 首先我们可以使用如下命令来查看Debian 中对于体系架构的一张描述表cat /usr/share/dpkg/archtable # ignore Debian name 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) mkdir /opt/build-gdb apt-get source gdb 注//意需要切换 root 2、根据需求配置我们的configure ./configure --enable-targets=x86_64-linux-gnu,mips-linux-gnu 3、编译 make 4、将生成的gdb 复制到/usr/sbi下n cp gdb/gdb /usr/sbin/gdb-all 以上操作就可以完成跨平台gdb 调试的基本安装! 二、如何使用 我们回到我们的问题的最开始: 如何定位? 1、gdb-all vmlinu这x 2、设置目标架构 个( 为开发板上所使用的vmlinx) 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 command_kernel_write+300 and ends at 0xffffffff804c1238 command_kernel_write+352. 注意:使用info lin应e 首先确定DEBUG_INFO 开启(附 1) 也可以查看反汇编 x/i 0xffffffff804c12(0此c为查看一行,多行格式为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

文档评论(0)

文章写作专家 + 关注
官方认证
服务提供商

本司主营文章撰写、培训教材、合同协议、发言稿、策划、汇报、各类文案。 ~ 海量资深编辑老师无缝对接,一对一服务。 ~ 保原创!可加急!免费改!

认证主体张家港市尚博锐艺术培训咨询有限公司
IP属地江苏
统一社会信用代码/组织机构代码
91320582302062995R

1亿VIP精品文档

相关文档