[gdb][script] 从版本 6.5 到 10.2 gdb gcc 工具链的语法更改

[gdb][script] Syntax change from version 6.5 to 10.2 gdb gcc toolchain

适用于此语句的 6.5.0 中的旧语法:

set {int}(&FlashBufferStart+$EraseCnt*2+0) = 0x1000

这意味着将值 0x1000 放入分配的地址中。

随着新的10.2.0这句话会导致错误:

无法对不完整类型“<数据变量,无调试信息>”执行指针数学运算

我尝试过使用类型转换括号、{int}、{void*},或者值可能只是以完全不同的方式结束,我已经看到类似 post 的错误,但它没有解决问题.有什么想法吗?

With the new 10.2.0 this sentence will result an error:

GDB 似乎不知道 FlashBufferStart 的类型。

GDB-6.5 可能假定这是一个 char(或者可能在 int 中),并默默地执行对应于假定指针类型的算法。

GDB=6.10 告诉您它不理解您想要它做什么。

解决方案:将 &FlashBufferStart 转换为适当的指针类型,以便 GDB 知道您想要什么。