微软 Visual Studio。寄存器

Microsoft Visual Studio. Registers

当我在 Microsoft Visual Studio 2017 中调试时,我的 "Registers" window 显示没有可用数据。我该怎么做才能解决这个问题?

如 Sneftel 所述,除非中断进程的执行,否则无法在调试器中检查数据。在执行过程中,事情变化得太快以至于任何数据显示都没有意义。

您可以使用工具栏中的 "Pause" 按钮中断执行,然后您将在调试器中看到所有内容:当前源代码行、寄存器内容、您的 "watch" 变量, "Memory"window等

中内存的全部内容

您还可以在特定的代码行上设置断点,然后一旦到达该点就会中断执行。

暂停后,您可以单步执行 通过您的程序代码。这意味着将执行一行代码(紧接着的下一行),然后程序将再次中断,以便您可以在调试器中看到所有内容。这是一项 出色的 故障排除技术 — 您应该非常熟悉。事实上,我建议您单步执行您编写的每一行代码,只是为了确保它能正常工作。您还可以在单​​步执行时修改寄存器和变量(或者,实际上,内存中的任何位置)的内容,为您自己提供一种测试潜在错误修复或什至引入错误(例如,无效输入)的方法来查看您的代码处理它们。单步的默认键盘快捷键是 F11.

您将找到有关使用调试器和可用键盘快捷键的更多信息,here on MSDN。如您所见,那篇文章证实了我的回答:

Most debugger features, such as viewing variable values in the Locals window or evaluating expressions in the Watch window, are available only while the debugger is paused (also called break mode). When the debugger is paused, your app state is suspended while functions, variables, and objects remain in memory. While in break mode, you can examine the elements' positions and states to look for violations or bugs.

(编辑并继续在程序集项目中不可用。如果要更改代码,您将需要停止执行并重建。)

对于那些显示“无可用数据”消息的用户,您可以右键单击寄存器 window 并选择您想要查看的内容(UC、MMX、SSE 等)。似乎默认情况下 Visual Studio 2019 没有任何选择。至少,我没有选择任何东西。