Gdb 从闪存启动时断点不工作
过去,我一直在调试Cortex M3(STM32F2)内部SRAM中加载的可执行文件,没有任何问题。我最近一直在将可执行文件加载到Flash(因为大小问题) 从那以后,用GDB进行调试就一直不起作用。据我所知,当可执行文件在Flash中时,只能使用硬件断点(与软件断点相反),我有六个硬件断点。但是,仅设置一个硬件断点时,GDB会生成错误消息:Gdb 从闪存启动时断点不工作,gdb,breakpoints,stm32,Gdb,Breakpoints,Stm32,过去,我一直在调试Cortex M3(STM32F2)内部SRAM中加载的可执行文件,没有任何问题。我最近一直在将可执行文件加载到Flash(因为大小问题) 从那以后,用GDB进行调试就一直不起作用。据我所知,当可执行文件在Flash中时,只能使用硬件断点(与软件断点相反),我有六个硬件断点。但是,仅设置一个硬件断点时,GDB会生成错误消息: (gdb) break main Breakpoint 1 at 0x800019a: file src/main.c, line 88. (gdb) c
(gdb) break main
Breakpoint 1 at 0x800019a: file src/main.c, line 88.
(gdb) c
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.
(gdb) Warning:
Cannot insert hardware breakpoint 1.
Could not insert hardware breakpoints:
You may have requested too many hardware breakpoints/watchpoints.
出了什么问题?我的硬件断点是否在后台设置
注意:我使用OpenOCD通过JTAG加载可执行文件。因此,基本上有两种方法(加上一种非常糟糕的方法)可以在任何给定的调试器/平台组合上实现断点:
听起来好像调试器只使用方法2(“软件断点”)。这种方法的缺点是它要求程序是可写的,而闪存不能一次写一条指令,所以这种技术不起作用。你有没有试过用hbreak创建断点?@ams:有,我试过。不起作用。
维护信息断点
说什么?@ams:它说“没有断点或观察点”。那应该排除隐藏的背景断点。