如何在 Eclipse 上的 ARM DS-5 Debug/Command 视图中定义和设置变量 CDT
How to define and set a variable in ARM DS-5 Debug/Command view on Eclipse CDT
我正在使用 ARM DS-5 (v5.29.1) Eclipse CDT 调试嵌入式项目,尝试使用调试器命令行通过“调试”透视图中的“命令”视图来操作内存位置。
根据调试器自带的context help(Ctrl+Space在命令行中),下面的命令应该定义一个变量并设置它的值:
set variable INTR_MASK=4
然而,当输入这个时,我得到一个错误:
ERROR(EXP8): Could not find the symbol "INTR_MASK"
如何定义和设置变量?
作为参考,这里是帮助说明:
set variable
------------
Evaluates an expression and assigns the result to a variable, register or
memory.
Syntax
set [variable] <expression>
Where:
<expression>
Specifies an expression and assigns the result to a variable, register, or
memory address.
Example
set variable myVar=10 # Assign 10 to variable myVar
set variable $PC=0x8000 # Assign address 0x8000 to
# PC register
set variable $CPSR.N=0 # Clear N bit
set variable (*(int*)0x8000)=1 # Assign 1 to address 0x8000
set variable *0x8000=1 # Assign 1 to address 0x8000
set variable strcpy((char*)0x8000,"My String") # Assign string to address 0x8000
set variable memcpy(void*)0x8000,{10,20,30,40},4) # Assign array to address 0x8000
在传达 ARM 支持后,发现实现该目标的正确方法如下:
newvar $INTR_MASK = (unsigned int)(0x00000004)
set variable $INTR_MASK = (unsigned int)($INTR_MASK + 0x00080000)
... 并且相关的好处是这些符号也可以在表达式视图中使用,因此没有更明确的地址,而是有意义的名称。
我正在使用 ARM DS-5 (v5.29.1) Eclipse CDT 调试嵌入式项目,尝试使用调试器命令行通过“调试”透视图中的“命令”视图来操作内存位置。
根据调试器自带的context help(Ctrl+Space在命令行中),下面的命令应该定义一个变量并设置它的值:
set variable INTR_MASK=4
然而,当输入这个时,我得到一个错误:
ERROR(EXP8): Could not find the symbol "INTR_MASK"
如何定义和设置变量?
作为参考,这里是帮助说明:
set variable
------------
Evaluates an expression and assigns the result to a variable, register or
memory.
Syntax
set [variable] <expression>
Where:
<expression>
Specifies an expression and assigns the result to a variable, register, or
memory address.
Example
set variable myVar=10 # Assign 10 to variable myVar
set variable $PC=0x8000 # Assign address 0x8000 to
# PC register
set variable $CPSR.N=0 # Clear N bit
set variable (*(int*)0x8000)=1 # Assign 1 to address 0x8000
set variable *0x8000=1 # Assign 1 to address 0x8000
set variable strcpy((char*)0x8000,"My String") # Assign string to address 0x8000
set variable memcpy(void*)0x8000,{10,20,30,40},4) # Assign array to address 0x8000
在传达 ARM 支持后,发现实现该目标的正确方法如下:
newvar $INTR_MASK = (unsigned int)(0x00000004)
set variable $INTR_MASK = (unsigned int)($INTR_MASK + 0x00080000)
... 并且相关的好处是这些符号也可以在表达式视图中使用,因此没有更明确的地址,而是有意义的名称。