调试小技巧:在仿真时查看指向数组的指针的内容
2015-03-18 22:23
211 查看
首发http://blog.csdn.net/chenbb8 转载请注明
PS:本技巧是在设置优化等级为low时候测试的,原因是测试用到的变量在high优化等级的时候,可能会被优化掉。谁知道怎么突破这个优化的请告诉我~~,不可以修改内存中的值哦。
在IAR中,将一个数组名添加到watch窗口,是可以点开数组查看到数组内容的。
比如有全局变量:
并在某个地方使用一下,防止优化:
那么将TestReadTbl添加到watch窗口后,效果如下:
但今天在调试CC2451的主机程序的时候,仿真进入到一个原型为
经过摸索后,找到了两种查看的方式。
方法一:定义一个包含数组的结构体类型kankan_t,然后通过它定义的变量来查看pData指向的缓冲区:
效果:
方法二:定义一个指向数组类型的指针,然后通过这个指针来查看pData指向的缓冲区:
效果:
另外还做了一个宏,喜欢就拿去吧:
使用方法:
PS:如果优化等级是none,那么将DebugReadBreak宏合并到DebugReadBuff中也没问题。
PS:本技巧是在设置优化等级为low时候测试的,原因是测试用到的变量在high优化等级的时候,可能会被优化掉。谁知道怎么突破这个优化的请告诉我~~,不可以修改内存中的值哦。
在IAR中,将一个数组名添加到watch窗口,是可以点开数组查看到数组内容的。
比如有全局变量:
[code]uint8_t TestReadTbl[31] = "123456789";
并在某个地方使用一下,防止优化:
TestReadTbl[0] = TestReadTbl[0];
那么将TestReadTbl添加到watch窗口后,效果如下:
但今天在调试CC2451的主机程序的时候,仿真进入到一个原型为
static bool simpleBLEFindSvcUuid( uint16 uuid, uint8 *pData, uint8 dataLen )的函数内部时,想查看pData指向子机广播数据的数组却甚是麻烦,如上图所示一样,只能显示出第一个字节的数据,就算将参数中的pData定义改成uint8 pData[31]效果也是一样。而将pData[0]-pData[31]一个一个的添加到watch窗口实在不是我等懒人的风格。
经过摸索后,找到了两种查看的方式。
方法一:定义一个包含数组的结构体类型kankan_t,然后通过它定义的变量来查看pData指向的缓冲区:
[code] typedef struct{ uint8_t pRead[31];} *kankan_t; kankan_t kankan; kankan = (kankan_t)pData; kankan->pRead[0] = kankan->pRead[0]; //在这个位置打断点,查看缓冲区值。
效果:
方法二:定义一个指向数组类型的指针,然后通过这个指针来查看pData指向的缓冲区:
[code]uint8_t (*kankantbl)[31] = (uint8_t (*)[31])pData; (*kankantbl)[0] = (*kankantbl)[0]; //在这个位置打断点,查看缓冲区值。
效果:
另外还做了一个宏,喜欢就拿去吧:
[code]#define DEBUG_READ_BUFF_CHAR(WATCH, PDATA, LENG) \ uint8_t (*(WATCH))[(LENG)] = (uint8_t (*)[(LENG)])(PDATA) #define DEBUG_READ_BREAK(WATCH) (*(WATCH))[0] = (*(WATCH))[0]
使用方法:
PS:如果优化等级是none,那么将DebugReadBreak宏合并到DebugReadBuff中也没问题。
相关文章推荐
- VS调试时把指向数组的指针按照数组方式查看
- VS调试时把指向数组的指针按照数组方式查看
- vc watch窗口查看指针指向的数组
- vc watch窗口查看指针指向的数组(转载)
- vc watch窗口查看指针指向的数组
- keil的51单片机仿真调试中如何查看内存的内容
- c语言函数如何获取传入的数组(指针)的指针所指向内容的长度
- VS调试 查看数组所有内容
- watch窗口语法规则|vc watch窗口查看指针指向的数组
- VC watch窗口查看指针指向的数组
- keil的51单片机仿真调试中如何查看内存的内容
- IAR 编译器仿真调试开始时的PC指针指向ResetISR()
- VC watch窗口语法规则|vc watch窗口查看指针指向的数组
- VC Watch窗口查看指针指向的数组
- Visual C++ 在调试时查看数组的内容
- 菜鸟写c++的小bug【3】调试时监视指针指向的数组
- 定义字符指针数组分别指向5个字符串常量,从小到大输出字符串内容
- VC++ Watch窗口查看指针指向的数组
- vc watch窗口查看指针指向的数组
- VC Watch窗口查看指针指向的数组