[VS][VC] 在调试过程中watch变量的技巧
2011-09-07 17:15
387 查看
在调试C(++)的时候,常会用到Watch或者Quick Watch来观察当前一些变量的数据,
但是在使用过程中常会遇到一些不方便的情况,最常见的,比如:
指针变量数组只能知道第一个元素的值
byte的值自做主张地给你标上字符
系统消息仅仅是一个数值,不知道具体的意义等等
如何解决这些问题呢?
其实在Watch或Quick Watch里有一种语法,称为格式标志符(Format Specifiers),使用这个,可以非常方便地解决上述问题,并且可以做到更多……
比如:
当我需要知道BYTE类型的a的内容时,它给出的却是自做主张的字符串,并且只能给出第一个地址的BYTE类型值:
====>
此时,你可以在Expression框里写上"a, 20X",这样你就可以看到全部BYTE值了
再比如,
如果你想知道当前的GetLastError值,并不需要调用GetLastError函数,也不需要用FormatMessage来显示具体内容,只需要在Watch框里填写:$ERR即可。
如果要知道具体内容,只需在后面加上hr,如:
这其中,逗号后面的,就称为Format Specifier。
常用的还有:
d, i, u, o, x, X, f, e, g等,跟C语言printf里的一样,表示数字的各种形式,并支持4X等写法;
c, s, su(Unicode String)等,用于显示字符及字符串;
hr 用于显示Win32 error code;
wm用于显示windows消息,比如WM_CLOSE等
其中,hr本来用于显示HRESULT的内容的,在VS2010中,不加hr也可以显示HRESULT的可读性内容了。
对于指针,
为了解决只能显示第一个地址的内容的问题,可以在指针的后面加上数目,比如:
pBuf, 20将显示pBuf指针及之增20个地址的所有内容,这个很好地解决了指针型数组变量的内容显示问题。
为了简化,对于指针的显示,还有一些约定的用法,比如:
pBuf, ma表示,显示pBuf起64个ASCII码字符;
pBuf, m表示,显示pBuf起16个byte的16进制形式,后面紧跟着该16个byte的ASCII码字符形式;
pBuf, mw表示,显示8个word;pBuf, md显示4DWORD;pBuf, mq显示2QWORD等等
总之,watch及quick watch窗口功能强大,还待我们进一步发掘呀。
但是在使用过程中常会遇到一些不方便的情况,最常见的,比如:
指针变量数组只能知道第一个元素的值
byte的值自做主张地给你标上字符
系统消息仅仅是一个数值,不知道具体的意义等等
如何解决这些问题呢?
其实在Watch或Quick Watch里有一种语法,称为格式标志符(Format Specifiers),使用这个,可以非常方便地解决上述问题,并且可以做到更多……
比如:
当我需要知道BYTE类型的a的内容时,它给出的却是自做主张的字符串,并且只能给出第一个地址的BYTE类型值:
====>
此时,你可以在Expression框里写上"a, 20X",这样你就可以看到全部BYTE值了
再比如,
如果你想知道当前的GetLastError值,并不需要调用GetLastError函数,也不需要用FormatMessage来显示具体内容,只需要在Watch框里填写:$ERR即可。
如果要知道具体内容,只需在后面加上hr,如:
这其中,逗号后面的,就称为Format Specifier。
常用的还有:
d, i, u, o, x, X, f, e, g等,跟C语言printf里的一样,表示数字的各种形式,并支持4X等写法;
c, s, su(Unicode String)等,用于显示字符及字符串;
hr 用于显示Win32 error code;
wm用于显示windows消息,比如WM_CLOSE等
其中,hr本来用于显示HRESULT的内容的,在VS2010中,不加hr也可以显示HRESULT的可读性内容了。
对于指针,
为了解决只能显示第一个地址的内容的问题,可以在指针的后面加上数目,比如:
pBuf, 20将显示pBuf指针及之增20个地址的所有内容,这个很好地解决了指针型数组变量的内容显示问题。
为了简化,对于指针的显示,还有一些约定的用法,比如:
pBuf, ma表示,显示pBuf起64个ASCII码字符;
pBuf, m表示,显示pBuf起16个byte的16进制形式,后面紧跟着该16个byte的ASCII码字符形式;
pBuf, mw表示,显示8个word;pBuf, md显示4DWORD;pBuf, mq显示2QWORD等等
总之,watch及quick watch窗口功能强大,还待我们进一步发掘呀。
相关文章推荐
- VC++6.0调试篇:变量的观察--watch窗口的技巧(转)
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- 【转】VC++6.0调试篇:变量的观察--watch窗口的技巧
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- VS调试技巧-汇编,逐语句,逐过程,跳出
- VS 调试技巧之特殊变量查看
- VC++6.0调试篇:变量的观察--watch窗口的技巧(转)
- VC++6_0调试篇:变量的观察--watch窗口的技巧
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- (技巧篇)存储过程调试技巧搜集
- VC、VS2005调试技巧
- vs调试程序时发现变量、类等程序找不到混乱问题
- 面向对象葵花宝典:思想、技巧与实践(3) - 面向过程 vs 面向对象
- carbide.vs调试技巧——缩减调试时间!
- VC调试方法技巧和常见问题总结分析(转)
- vs调试技巧
- VC++使用过程中的技巧及问题
- VS使用过程中的常用技巧