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

Memory 为什么gdb需要目标的ram和rom的内存映射来进行调试,memory,memory-management,gdb,gdbserver,Memory,Memory Management,Gdb,Gdbserver,请有人告诉我为什么gdb需要一个RAM和目标ROM的内存映射来进行调试 如果我们在gdb中启用详细控制台,那么我们可以看到一些痕迹清楚地显示: 还有ROM 这个内存是用于代码放置还是用于其他目的……请澄清我的问题 谢谢 如果您谈论的是使用gdb的mem命令定义的内存映射,那是因为gdb需要知道如何处理内存 默认情况下,它假定它可以写入所有内存并缓存所有内存 出于不同的原因,这一点很重要,最常见的情况是用户试图设置断点。默认情况下使用“软件”断点,这要求gdb用特殊断点指令替换设置断点的地址处的原

请有人告诉我为什么gdb需要一个RAM和目标ROM的内存映射来进行调试

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

这个内存是用于代码放置还是用于其他目的……请澄清我的问题


谢谢

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

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

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


有关详细信息,请参见。

谢谢您提供的信息。。。实际上,我正在使用基于eclipse的IDE进行调试。IDE提供的my target的板配置文件将RAM的大小指定为256KB,而sabre lite的数据表显示它有1GB内存?那么初始化代码可能依赖于只有256KB内存的板,您将无法在没有问题的情况下使用更多内存(堆栈通常位于内存顶部,堆也可以仅扩展到顶部)…但请提供更多详细信息。此配置文件定义的内容取决于使用的IDE。