Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在eclipse CDT中监视函数内部的静态变量_C_Debugging_Eclipse Cdt - Fatal编程技术网

在eclipse CDT中监视函数内部的静态变量

在eclipse CDT中监视函数内部的静态变量,c,debugging,eclipse-cdt,C,Debugging,Eclipse Cdt,在c语言中,当一个变量在一个函数中被定义为静态变量时,该变量的值始终保持不变。因此,它可能存储在bss或数据部分中 但是,在EclipseCDT调试中,当尝试检查此变量时,在表达式窗格中键入变量名仅在堆栈帧位于函数中时显示变量,就像局部变量一样 它是eclipse中的一个bug吗 编辑: 在IAR Embedded workbench中,函数中的静态变量可以在调试过程中在函数外部观察,因此这是可能的。而实际上,变量存储在堆中。。。变量的范围仍然是函数的局部范围。它的值在该函数之外没有任何意义,并

在c语言中,当一个变量在一个函数中被定义为静态变量时,该变量的值始终保持不变。因此,它可能存储在bss或数据部分中

但是,在EclipseCDT调试中,当尝试检查此变量时,在表达式窗格中键入变量名仅在堆栈帧位于函数中时显示变量,就像局部变量一样

它是eclipse中的一个bug吗

编辑:
在IAR Embedded workbench中,函数中的静态变量可以在调试过程中在函数外部观察,因此这是可能的。

而实际上,变量存储在堆中。。。变量的范围仍然是函数的局部范围。它的值在该函数之外没有任何意义,并且在函数之外时它不应该改变。。。除非您向它传递指针,否则在这种情况下,您可以在任何有权访问该指针的函数中查看它


所以。。。不这不是一个bug。

您需要用函数限定静态变量,以确定作用域,例如,
foo::myvar
如果在IAR Embedded workbench中的函数
foo
中定义了
myvar
,那么函数中的静态变量可以在函数外部查看,因此这是可能的。也许。。。但是,它们仍然超出了范围。我认为IAR这样做打破了变量声明范围的封装。为什么我们关心封装,我们没有进行“面向对象”的调试。比如说,我有一个函数,它有一个静态变量,它保存了函数被调用的次数。即使在函数的作用域之外,这对于调试也是有价值的信息。我们没有进行面向对象的调试。。。变量未定义,超出范围。如果你想检查内存,那么你就看一个内存地址。。。或在检查员中确定范围。