尝试在Visual Studio 2017的调试器中设置注册表:"读取寄存器值"

时间:2017-12-20 04:45:26

标签: c++ visual-studio assembly x86-64 visual-studio-debugging

我目前正在YouTube上使用x64 Assembly Tutorial

我现在所做的就是在C++中使用ASSEMBLY函数并使用mov指令将值移入寄存器等基本内容。

这里是C++代码:

#include <iostream>
using namespace std;

extern "C" void SomeFunction();

int main() {
    SomeFunction();

    // Just putting this here to stop the program from closing immediately after opening
    cin.get();

    return 0;
}

以下是ASSEMBLY代码:

.code
SomeFunction proc               
    mov ax, -1          
    ret                                 
SomeFunction endp
end

问题我在使用Visual Studio社区2017,每当我运行本地窗口调试器并尝试添加监视到注册表ax时,但我不断收到错误消息'Error reading register value'

我哪里错了?

道歉,如果不清楚,请告诉我,我可以尝试更好地解释。

更新:所以我尝试使用rbx注册表,我可以添加一个手表。但现在的问题是,它告诉我它不包含任何值(值部分只显示0),尽管我使用mov来移动寄存器中的值-1

不知道这些信息是否有帮助。

1 个答案:

答案 0 :(得分:0)

已解决:为了解决这个问题,我首先在每条指令上添加了一个断点。这使我们能够“分步”运行程序。

然后在调试期间,我转到顶部菜单并选择:

Debug >> Windows >> Registers

这将使您能够看到所有寄存器。

然后我保存了两个ASSEMBLYC++个文件然后运行它(你可以使用F5作为运行的快捷方式)。

注意:该程序将在BREAKPOINT之前执行所有说明。

因此,如果我在mov ax -1处设置断点,则仅执行所有指令。