请有人指导我为什么gdb需要RAM的内存映射和目标ROM进行调试。
如果我们在gdb中启用详细控制台,那么我们可以看到一些清晰显示的痕迹: 还有ROM。
这个记忆是用于代码放置还是用于其他目的.....请澄清我。
感谢。
答案 0 :(得分:1)
如果你在谈论用gdb的mem命令定义的内存映射,那是因为gdb需要知道如何处理内存。
默认情况下,它假定它可以写入所有内存并缓存所有内存。
由于不同的原因,这很重要,一个最常见的情况是用户尝试设置断点。默认使用“软件”断点,这要求gdb在使用特殊断点指令设置断点的地址处替换原始指令。如果内存是只读的,则它不能这样做,并且必须使用硬件断点,这些断点的数量有限,甚至可能无法使用。定义内存区域使用户不必手动选择最合适的断点指令(中断/ hbreak),因为gdb将自动在只读区域中使用硬件断点。
详细信息在this chapter of GDB manual中解释。