我注意到这个问题上的 TotalView 标签。您是问如何在 TotalView 中查看数组中的值吗?如果是这样,那么答案就很简单了。
假设您有一个 int * 类型的指针 p,并且当前它指向一个包含 10 个整数的数组。
步骤 1. 潜入指针。这是通过双击、单击鼠标中键或使用上下文菜单上的潜水选项来完成的——所有这些都是在将鼠标光标放在源代码窗格或堆栈帧窗格中的变量上之后完成的。
这将弹出一个新窗口,其中显示
表达式:p
地址:0xbfaa1234
类型:整数*
在数据区域下方会显示类似的内容
0x08059199 -> 0x000001a5 (412)
该窗口向您显示指针本身,列出的地址是指针的地址。该值(上例中的 0x08059199)是指针具有的实际值。箭头右侧的所有内容都只是一个“提示”,告诉您想要它指向的方向。
步骤 2. 再次按下指针。重复双击或鼠标中键,这次是在变量窗口中的数据值上。 (所以你双击0x08059199的地方)。
这将有效地“取消引用”指针。现在窗口的焦点不再是指针本身,而是指针所指向的东西。请注意,地址框现在包含 0x08059199,这是之前的值。
表达式:*(((int *) p))
地址:0x08059199
类型:整数
在数据区域下面会显示类似的内容
0x000001a5 (412)
步骤 3. 将数据窗口转换为您想要的类型。只需单击类型字段并将其更改为 int[10]。然后按回车键。
这告诉调试器 0x08059199 是 10 个整数数组的开头。
该窗口将增加两个新字段:切片和过滤器。您现在可以先不管它们,但它们以后可能会有用。
数据区域现在将显示两列“字段”和“值”以及 10 行。
字段列将是数组 [0] - [9] 中的索引,值列将告诉您每个数组位置中有哪些数据。
其他提示:
在更复杂的数据结构中,您可能想要深入研究各个元素(也可能是指针,深入研究也会取消引用它们)
您始终可以转换为不同的类型或长度来“就好像”数据一样
您可以通过单击值列并编辑在那里找到的内容来编辑实际数据值。当您想从应用程序中引发特定的错误行为时,这非常有用
您始终可以使用变量窗口右上角的“
有一些在线视频可能会对您有所帮助
http://www.roguewave.com/products/totalview/resources/videos.aspx http://www.roguewave.com/products/totalview/resources/videos.aspx
特别是有一个标签为“TotalView 入门”。
请随时联系 Rogue Wave Software 了解 TotalView 使用技巧!
roguewave dot com 的支持是一个很好的地址。
克里斯·戈特布拉斯
(roguewave dot com 的 Chris dot Gottbrath)
Rogue Wave Software TotalView 产品经理