none
VS 的奇怪问题: VS的局部变量、监视等窗口内获取不到正确的数据 RRS feed

  • 问题

  •     如图,对buf数组赋值,其中明明有几个常量,赋值结束后(如图当前语句处),看局部变量窗口,所有数据全是0(实际上赋值已经正确完成,该程序稍后会将该数组通过串口发送到其它设备,下有其它设备收到数据后中断后的监视窗口截图)。

        请问这个是什么原因?

    ps:

    1、VS 未曾重新安装,但经过了一次修复,无果。  

    2、该软件在其他机器上运行,只占用约30~50M内存,在这台电脑上却要占用近300M内存。   

    3、软件就是普通用户权限,不需要管理员权限

    图一:软件运行监视截图如图

    图二:其它设备收到数据后中断后的监视窗口截图

    图二

    2017年11月7日 6:14

答案

  • 谢谢你的回答。

    我现在已经重新安装了系统,上述问题已经没有再出现过了,所以也就没有可能再重现问题了。

    还是很谢谢你的热心回答!

    2017年11月27日 9:09

全部回复

  • Hi,

    我这边使用结构体是可以看到局部变量的值,使用的是vs2017,在windows 10上面。

    我看了你的截图,好像代码还没执行到下一行,不知道是不是下面的原因导致的结果。

    据我理解,程序执行完一行的标志是到分号结束,你这个截图应该没有把分号执行结束,所以这个句代码,没有真正意义上执行完成。

    所以你没有办法看到这个变量。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年11月8日 3:04
    版主
  • 额, 其实第一句的声明赋值语句比较长,截图只截了一半,后面是有分号的。

    而且,数组的声明赋值语句后面也不可能接第二句语句,否则连编译都通不过不是吗

    2017年11月9日 8:30
  • Hi,

    感谢你的回复。

    >>所有数据全是0(实际上赋值已经正确完成,该程序稍后会将该数组通过串口发送到其它设备,下有其它设备收到数据后中断后的监视窗口截图)。

    你是说 buf.ModbusCrc16(); 这句代码就是发送数据吗? 然后看不到数据检测了?

    >>额, 其实第一句的声明赋值语句比较长,截图只截了一半,后面是有分号的。

    我的意思 是 分号代表一句code运行结束,然后变量最后才被真正赋值,不然值都是存在临时内存区域,这样就会检测不准。

    你可以提供一份可以重现问题的demo 到one drive 上面吗?

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年11月14日 7:48
    版主
  • 谢谢你的回答。

    我现在已经重新安装了系统,上述问题已经没有再出现过了,所以也就没有可能再重现问题了。

    还是很谢谢你的热心回答!

    2017年11月27日 9:09