0

我正在使用 Visual Studio 2010,使用和 .exe(没有原始代码,所以我只能看到汇编程序)。它生成的代码与此类似(不完全是,它有未知的细微变化):

int main() {
    int points = 1000;
    int games = 0;

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

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

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

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

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

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

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

4

1 回答 1

1

好吧,我有点想出一个环形交叉路口......如果其他人有同样的问题,你可以通过创建和标记断点来部分避免它。其中一个在第一行。

例如,您可以在 main 方法的调用处或在它的开头放置另一个。然后,无需停止并重新启动调试,只需转到第一个断点并右击指令 > 稳定下一条指令。

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

于 2013-05-05T20:01:16.087 回答