GDB错误:Cannot find bounds of current function
http://blog.csdn.net/zoomdy/article/details/17249165
mingdu.zheng <at> gmail <dot> com
使用arm-eabi-gdb加载应用程序调试,运行后出现错误:
$ arm-eabi-gdb httpd_sequential 0x00008766 in ?? () (gdb) n Cannot find bounds of current function
看起来像是gdb找不到应用程序的调试符号,检查编译选项已经添加了调试相关选项。
使用file命令检查加载的文件:
$ file httpd_sequential httpd_sequential: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
编译应用程序的gcc与调试程序的gdb不匹配,arm-eabi-gdb需要的是arm-eabi-gcc编译生成的映像文件。gdb居然不检查ELF文件头给出错误报告。
使用正确的gcc编译其编译后重新使用file命令检查文件类型:
$ file httpd_sequential httpd_sequential: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
使用匹配的gcc编译的应用程序调试起来就不会有问题。
在嵌入式系统开发过程通常需要交叉编译,必须小心处理所使用的编译器和调试器,特别是在使用Eclipse等集成开发环境的情况下要仔细核对开发环境使用的是那个编译器和调试器。默认情况下Eclipse调用的是本地编译器和调试器,而不是交叉编译器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决