张银峰的编程课堂

使用监视与内存工具

这里我们通过学习对数组的调试,丰富一下我们的诊断工具箱。

1:按图示输入代码,并设置好断点。

glimix.com

2:按下F5启动调试,这时程序进入第一个断点处。 3:选择【调试】菜单下【窗口 --> 监视 --> 监视1】命令,打开【监视1】窗口。 4:选择【调试】菜单下【窗口 --> 内存 --> 内存1】命令,找开【内存1】窗口。

glimix.com

5:监视数组

  • 方法A:在【监视1】窗口中,点击名称下的单元格,输入数组名datas
  • 方法B:用鼠标拖放源代码中任意一个datas名称到【监视1】窗口中

6:监视内存

  • 把datas名称拖动到【内存1】的地址栏处
  • 或者将【监视1】中datas的值 0x00eff820 输入到【内存1】的地址栏处并按下回车

glimix.com

此时注意观察以下几点:

  • 数组的5个元素值为-858993460,因为数组未初始化,它们是无效值。
  • 数组datas的值是 0x00eff820,这是一个内存地址,指针持有的就是这样一个地址。
  • 内存1窗口中地址也是0x00eff820,这与监视窗口一致,这是数组的起始地址。
  • 内存窗口中每个小单元代表1个字节的空间。

7:按下F5,为数组第一个元素赋值1。

glimix.com

  • 两个窗口中数值变化的部分均以红色突出显示了。
  • 内存1窗口中有4个字节的值变为了红色,这是因为当前环境下int占据4字节内存空间。
  • 数值1的存储顺序是 01 00 00 00 而不是 00 00 00 01,这表示在当前系统下,低位字节的数据存储在内存低位。

8:修改数值

  • 按下F5,直到程序运行至 return 0; 处
  • 在监视1窗口中,将数组第5个元素修改为5,注意内存1窗口中也有同等的变化。
  • 观察内存图,你会发现数组中的元素是连续存储的

glimix.com