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



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

如果我们在gdb中启用详细控制台,那么我们可以清楚地看到一些痕迹:以及ROM。

这个内存是用于放置代码还是用于其他目的。。。。。请澄清。

谢谢。

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

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

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

GDB手册的本章对此进行了详细说明。

最新更新