[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 知道您想要什么。
适用于此语句的 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 知道您想要什么。