如何:设置数据断点(仅限本机)
本主题适用于:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
学习版 |
仅限本机 |
||||
专业版、高级专业版和旗舰版 |
仅限本机 |
数据断点可在写入存储在指定内存位置的值时中断执行。 如果只读取而不写入该值,则不会中断执行。
数据断点在下列情况中无效:未在调试的进程向该内存位置写入数据,或者该内存位置由两个或多个进程共享。
另外,如果在内核中更新了该内存位置,数据断点也将无效。 例如,如果将内存传递给 32 位的 Windows ReadFile 函数,则会在内核模式下更新内存,并且调试器不会在执行内存写入操作时中断。
若要设置数据断点,必须使调试器只处于中断模式下。
当从一个调试会话转到下一个会话时,变量地址会更改。 因此,数据断点在每个调试会话结束时将被自动禁用。
如果在本地变量上设置数据断点,则在函数结束后,数据断点仍保持启用状态。 但是,设置断点的内存地址将不再具有相同的含义。 因此,此类断点的结果是不可预知的。 如果在局部变量上设置了数据断点,最佳做法是在函数结束前移除或禁用断点。
Visual Studio 支持最多为每个解决方案设置四个数据断点。
提示
显示的对话框和菜单命令可能会与帮助中描述的那些有所不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
设置内存更改断点
在**“调试”菜单上,选择“新建断点”,然后单击“新建数据断点”**。
- 或 -
在**“断点”窗口菜单中,单击“新建”,然后选择“新建数据断点”**。
出现**“新建断点”**对话框。
在**“地址”**框中,键入内存地址或计算结果为内存地址的表达式。
例如,键入 &avar,则当变量 avar 的内容更改时中断。
在**“字节计数”**框中,键入希望调试器监视的字节数。
例如,如果键入 4,调试器将监视从 &myFunction 开始的四个字节,并在其中有任何字节的值发生更改时中断。
单击**“确定”**。