尝试在Visual Studio 2017的调试器中设置监视器:“读取寄存器值时出错”

问题描述 投票:3回答:1

我目前正在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 Community 2017,每当我运行Local Window Debugger并尝试将Watch添加到寄存器ax时,我会不断收到错误消息'Error reading register value'

我哪里错了?

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


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

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

c++ visual-studio assembly x86-64 visual-studio-debugging
1个回答
0
投票

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

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

Debug >> Windows >> Registers

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

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

注意:程序将在BREAKPOINT之前执行所有指令。

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

© www.soinside.com 2019 - 2024. All rights reserved.