首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

软件Overlay:程序编写与调试(2)

软件Overlay:程序编写与调试(2)

二,在程序执行时期将函数加载,函数ovly_copy是一个memcpy函数,将函数从LMA复制到VMA上。当OverlayLoad(0)执行完后,overlay0函数主体便存在于VMA上,可正确的执行。

图表9为_ovly_table的内容,要标示每一个overlay section的vma, size, lma,和是否mapped。必须要注意的一点,_ovly_table要位在一个lma等于vma的区域里。

2. 调试Overlay的程序
开启自动overlay调试功能的gdb命令是overlay auto。当overlay auto开启后,对于使用者来说,与一般程序的调试方法相同。
图表8的最后一行_ovly_debug_event()的用途是让gdb能把断点加在正确的地址上,这一行要写在OverlayLoad的后面。必须要有这一行,gdb的自动overlay调试才能正常。
当用户加一个断点在被overlay的区域,gdb会在函数被加载之后(即为执行完OverlayLoad),遇到_ovly_debug_event时,自动的把断点加到overlay的地址上。
3. 参考数据
Overlay Commands https://sourceware.org/gdb/onlinedocs/gdb/Overlay-Commands.html
Automatic Overlay Debugging https://sourceware.org/gdb/onlin ... c-Overlay-Debugging
Debugging Programs That Use Overlays
http://davis.lbl.gov/Manuals/GDB/gdb_11.html
Andes BSP v3.2.0 User Manual
Chapter 12 “Linker Script Generation”
返回列表