VS调试技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011388696/article/details/82053048

VS调试中经常使用断点、堆栈窗口,很少使用监视、快速监视窗口和即时命令窗口。查找了相关资料后发现监视窗口在某些情况下还是很有用的,所以针对上述窗口大体总结了一下;
1.添加监视变量
程序执行过程中命中断点后,
a. 在变量名称位置单击右键,”添加监视”;
b. 将变量选中,拖动 到监视窗口;
c. 在监视列表中双击,编辑要监视的变量名称;
2. 监视中查看、修改变量当前值
a. 若监视的变量为数值,则可选择数值展示的进制格式:1) 单击右键,选择”以x进制展示”; 1) 通过”变量名称,格式字符”的方式切换展示方式,如下图。图中a变量的当前值为0xabc,”a,d”是以十进制方式展示;”a,x”是以十六进制小写展示。vs支持多种格式字符,详细说明见如下链接:
https://msdn.microsoft.com/zh-cn/library/75w45ekt.aspx
数值格式化显式
b. 双击变量值,可做编辑修改,修改后的变量如图标红高亮显式。MSDN上对于标红高亮的解释如下:

为什么在“局部变量”窗口和“自动”窗口中变量值有时是红色的?
你可能注意到,在“局部变量”和“自动”窗口中一个变量的值有时是红色的。 这些是自上次评估以来更改过的变量值。 此更改可能是在上一次调试会话中进行的,或者是因为在窗口中更改了该值。

3.计算表达式的值
在监视窗口中可对当前作用域中的可见变量计算相关表达式的值:
a. 变量加减或取址
这里写图片描述
b.函数或接口调用
接口调用时,值这一列对应为函数调用的返回值,若无返回值则为void
这里写图片描述
c.查看地址对应的符号信息
调试中需要查看某些地址位置对应的符号,可以添加到监视窗口,默认地址值以数值方式展示。若明确知道该地址为某一类型变量的地址,则可以将对地址做强制地址转换,输入如下表达式:(CSomeType*)0x000aefee。然后就可以看到该地址对应内存中的内容。若不知道其实际类型,可尝试使用”void*”做强制转换以明确告诉调试器,该值为内存地址值,调试器会尝试做符号解析。测试中发现void*强转仅对编译期生成的静态符号,如函数,静态变量等能够准确匹配,堆或栈上分配的数据变量无法匹配(静态变量定义后需要有访问、使用,否则编译器会将其优化掉,导致监视时找不到该变量)。如下图:
这里写图片描述
另外,对于监视窗口的使用,CodeProject有篇文章总结的很好,推荐读一下:

https://www.codeproject.com/articles/121623/10-tips-you-should-know-about-watch-window-while-d

猜你喜欢

转载自blog.csdn.net/u011388696/article/details/82053048
今日推荐