首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手臂上怎么用kgdb??

手臂上怎么用kgdb??
EN

Stack Overflow用户
提问于 2013-01-04 10:42:54
回答 2查看 4.1K关注 0票数 14

我正在使用ARMv7作为目标机器。我已经为目标编译了Linux源代码2.6.34.13

使用minicom通过串口与主机()连接。

目标装载了新内核,并且在命令提示符中启用了KGDB。

代码语言:javascript
复制
$ echo ttyAMA0 > /sys/module/kgdboc/parameters/kgdboc 
$ echo g > /proc/sysrq-trigger

进入KGDB..。将显示消息并等待命令。

主机端中,

代码语言:javascript
复制
$arm-none-linux-gnueabi-gdb vmlinux

    gdb > set remotebaud 115200
    gdb > set debug remote 1
    gdb > target remote /dev/ttyS0

在此之后,默认情况下会发生一些命令通信。

  1. qSupported从主机发送到目标。但是目标不支持qSuppoted,因此返回了$#00。类似地,?发送了HC-1命令,但接收到了正确的响应。
  2. 但是qOffsets命令没有收到来自目标的任何响应。

我怀疑vmlinux。因为如果我在gdb中给出list,它没有显示10行代码,而是这样写着

代码语言:javascript
复制
arch/arm/kernel/head.S : No such file or directory.

注意:在服务器中完成内核编译。因此,在开发机器中没有可用的源。但是手臂-gdb似乎在找头。

我不知道我做了什么错误。我需要为整个内核加载符号。在这方面指导我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-16 12:23:59

最后,主机到目标通信建立了线路延迟的bcos。开发机器中的内核源代码与超时问题之间没有任何关系.

对于某些命令的超时问题,例如qOffsetqSupported是通过使用GtkTerm而不是minicom作为串口通信工具来解决的。差异是GtkTerm中的“行延迟”选项。因此,当这被配置为~250时,此后就没有超时消息。简单地建立连接并在默认断点等待。如果有人知道如何在minicom给这个"line delay",将会对每个人都有更大的帮助。

当然,我们需要执行list命令的源代码。但是没有这些源,我们也可以进行调试,即si, bt可以在vmlinuxsystem.map的帮助下执行。

注意:设置调试远程1是不必要的。这提供了主机到命令通信的详细显示。有关更详细的视图,请参阅set debug serial 1

票数 1
EN

Stack Overflow用户

发布于 2013-01-12 07:54:49

那个kgdb在找头S不是个错误。如果您查看这里,您将看到源树中有一个head.S文件。只是一个汇编程序文件而已。有几个源文件是用汇编语言为这个平台编写的。

这是正常的,因为一些指令,特别是引导序列和其他“低级”功能是在汇编程序中编写的,因为它更容易。

正如注释中所写的,gdb需要在调试时浏览它们的源代码。在包含调试符号并在使用-g运行gcc时生成的调试-部分中,除其他外,还有对源文件、行和列的“只”引用。有关使用gcc的调试符号的更多信息和进一步链接,请参见这里

kgdb正在寻找head.S,这是一个很好的迹象,表明您正在做正确的事情。如果您有可用的源(并且可以简单地打开正确版本的tarball ),只需在这个源代码树中运行kgdb,或者使用-d参数添加源搜索路径,当然是在您的开发机器上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14155577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档