过去,我一直在调试加载到我的 Cortex M3 (STM32F2) 的内部 SRAM 中的可执行文件,没有任何问题。我最近一直在将我的可执行文件加载到 Flash(因为大小问题)。
从那以后,使用 GDB 进行调试就一直不起作用。据我了解,当可执行文件在 Flash 中时,只能使用硬件断点(与软件断点相反),我有六个硬件断点。但是,当只设置一个硬件断点时,GDB 会产生错误消息:
(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 加载可执行文件。