Visual Studio反汇编:丢失断点

时间:2013-05-05 10:33:31

标签: c++ visual-studio breakpoints disassembly

我正在使用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将汇编程序放在同一个内存位置?或者任何让我保留断点的东西,所以我不需要每次都逐行执行。

1 个答案:

答案 0 :(得分:1)

好吧,我有点想到了一个回旋处...如果其他人遇到同样的问题,你可以通过创建和标记断点来部分避免它。其中一个就在第一行。

例如,您可以在主方法的调用或其开头处放置另一个。 然后,不要停止并重新启动调试,只需转到第一个断点即可 严格点击指令>坚持下一条指令。

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