C++ Visual Studio反汇编:丢失断点

C++ Visual Studio反汇编:丢失断点,c++,visual-studio,breakpoints,disassembly,C++,Visual Studio,Breakpoints,Disassembly,我正在使用VisualStudio2010,使用and.exe(没有原始代码,所以只能看到汇编程序)。 生成它的代码与此代码类似(不完全相同,它有未知的微小更改): 加上两个被调用的方法(非常简单的方法) 现在,当我尝试调试.exe时,我打开它,按F11,一切都很顺利。 我开始阅读代码,放置一些断点,找到主 但是当我停止它并尝试按F5转到第一个断点时,我发现我的程序被加载到内存中的另一个地方。因此,我找不到任何断点(指向未使用的内存) 其他时候,我会使用F10/F11逐行搜索,直到找到断点。有时

我正在使用VisualStudio2010,使用and.exe(没有原始代码,所以只能看到汇编程序)。 生成它的代码与此代码类似(不完全相同,它有未知的微小更改):

加上两个被调用的方法(非常简单的方法)

现在,当我尝试调试.exe时,我打开它,按F11,一切都很顺利。 我开始阅读代码,放置一些断点,找到主

但是当我停止它并尝试按F5转到第一个断点时,我发现我的程序被加载到内存中的另一个地方。因此,我找不到任何断点(指向未使用的内存)

其他时候,我会使用F10/F11逐行搜索,直到找到断点。有时,我会找到它们(并且它们被启用),但我会再次尝试执行,直到找到它们(F5)并通过它们


例如,有人知道我是否可以强制VisualStudio将汇编程序始终放在同一个内存位置吗?或者任何让我保留断点的东西,这样我就不需要每次都逐行执行了。

好吧,我觉得有点迂回。。。如果其他人有同样的问题,您可以通过创建和标记断点来部分避免它。其中一个在第一行

例如,您可以在main方法的调用或开始时放置另一个。 然后,不要停止并重新启动调试,只需转到第一个断点并 右键单击指令>建立下一条指令

然而,这可能会导致数据出现问题(最肯定的是会出现问题),所以要小心。
它对我很有效,但可能只是因为我将它用于一项非常简单的任务。

ASLR可以解释它,但这需要重新启动。很可能,这完全是故意的。代码中内置的一个功能,用于明确阻止您进行操作。没有游戏发行商授权他们的游戏允许你破解它们。首先,我想澄清的是,我只是试图解决软件工程第一年的一个练习,而不是试图获取信息来破解游戏。我甚至可以上传练习的声明和我收到的材料。。。(你需要能够阅读西班牙语tho)。似乎这个答案是经过编辑的,或者我找不到上一个答案(我试图理解,但它似乎很有用)。无论如何,我似乎无法关闭ASLR。也许我以错误的方式打开解决方案,因为当我创建一个测试项目时,很容易找到。在本例中,属性页面仅显示“公共属性”和“配置属性”,与链接器无关。无论如何谢谢你,知道这种事情总是很好的。我将设法找出解决我问题的办法。
int main() {
    int points = 1000;
    int games = 0;

    srand ((unsigned int) time(NULL));  // random seed

    while(true) {
        games++;
        playGame(&points, games);
    keepPlaying();
    }
    return 0;
}