首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GDB:[无资料来源]

GDB:[无资料来源]
EN

Stack Overflow用户
提问于 2019-06-23 17:16:32
回答 1查看 1.2K关注 0票数 2

我为armv7-m (Cortex-Mx)微控制器编写了一个内核。内核能够动态加载ELF文件。在GDB中调试时,所有内核符号都会被加载,并且我可以一步一步地通过C++源代码,而不会出现问题。在动态加载应用程序符号时,可以使用以下方法添加:

代码语言:javascript
复制
add-symbol-file app <base .text address> -s .data <base .data address> -s .bss <base .bss address>

然后,我可以设置断点,使用程序集视图进入main,并打印出诸如argc/argv等符号的值。一切看起来都是正确的。

除了在源视图中,它只是显示没有可用的源。我验证了应用程序是用-O0 -ggdb编译的。ELF应用程序的路径是正确的。在GDB上乱搞,设置目录,没有运气。

GDB中解析源的机制是什么?如果加载了符号,整个ELF中都有调试信息,而且源代码与编译位置相同,还有什么问题吗?

gdb -多弓GNU gdb(Ubuntu8.1-0ubuntu3) 8.1.0.20180409-git

arm-none-eabi-gcc (用于Arm嵌入式处理器的GNU工具7-2018-Q3-更新) 7.3.1 20180622 (发行版)ARM/ Embedded -7-分支修订261907

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-07-01 16:50:44

我能够在链接器脚本中修复我在.text上移动的特定部分。不知道为什么这会改变什么..。我想这一定会改变下面部分的排列,但我的实验都没有结果。

代码语言:javascript
复制
  /* These MUST be before .text segment for proper symbolic debugging... */
  .dynstr         : { *(.dynstr) } > FLASH
  .hash           : { *(.hash) } > FLASH
  .dynsym         : { *(.dynsym) } > FLASH

如能对此作出任何解释,我将不胜感激。也许是因为GDB的内部假设?

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

https://stackoverflow.com/questions/56726190

复制
相关文章

相似问题

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