none
该怎么用好数据断点? RRS feed

  • 问题

  • 既然Visual Studio提供了数据断点的功能,那么调试内存更改将会非常方便。但是VS又规定了数据断点只能监视1、2、4、8个字节,那么这个功能有什么用呢?比如我有一个数据缓冲区

    char* buf = new char[64 * 1024];

    这是一个只读缓冲区,但是不知道什么时候在什么地方被更改了数据。所以下一个数据断点,监控这段内存。问题来了,数据断点只能监视4个字节(有些机器不支持监视8个字节,提示:无法设置断点,硬件不支持对所请求数量的字节进行监视),难道我要下16384个数据断点去监控这段内存?

    2016年8月12日 9:40

答案

  • Hi 潇羽,

    感谢在MSDN论坛发帖。

    数据断点的原理是通过处理器提供一定的寄存器用于存放程序的断点位置,当我们通过调试工具设置断点时,调试程序会将所需中断的指令地址放入到处理器的程序中断寄存器中。而处理器的这种寄存器是有限的,因此我们可以设置的字节数也是有限的。

    这个是硬件相关的,没有办法更改。

    我的建议是可以使用strcmp函数或者比对工具,去对比被修改前后的数据,找到具体被修改的数据点。然后监听被修改的数据点的位置。可以快速找到相应的问题所在。

    如果你需要vs的改进建议, 请connect Microsoft。

    谢谢你的支持与合作。

    Best Regards,

    Sera Yu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    • 已标记为答案 潇羽 2016年8月15日 9:36
    2016年8月15日 6:23