为什么gdb需要ram的内存映射和目标的rom来进行调试

时间:2014-09-04 05:19:52

标签: memory memory-management gdb gdbserver

请有人指导我为什么gdb需要RAM的内存映射和目标ROM进行调试。

如果我们在gdb中启用详细控制台,那么我们可以看到一些清晰显示的痕迹:  还有ROM。

这个记忆是用于代码放置还是用于其他目的.....请澄清我。

感谢。

1 个答案:

答案 0 :(得分:1)

如果你在谈论用gdb的mem命令定义的内存映射,那是因为gdb需要知道如何处理内存。

默认情况下,它假定它可以写入所有内存并缓存所有内存。

由于不同的原因,这很重要,一个最常见的情况是用户尝试设置断点。默认使用“软件”断点,这要求gdb在使用特殊断点指令设置断点的地址处替换原始指令。如果内存是只读的,则它不能这样做,并且必须使用硬件断点,这些断点的数量有限,甚至可能无法使用。定义内存区域使用户不必手动选择最合适的断点指令(中断/ hbreak),因为gdb将自动在只读区域中使用硬件断点。

详细信息在this chapter of GDB manual中解释。