C++ 在多次运行中调试具有相同内存地址位置的程序?

C++ 在多次运行中调试具有相同内存地址位置的程序?,c++,visual-studio-2010,visual-studio,debugging,visual-studio-debugging,C++,Visual Studio 2010,Visual Studio,Debugging,Visual Studio Debugging,我有一个程序正在VisualStudio2010中调试。我在程序中出现了一个可再现的错误,我正在打印一些诊断信息。错误使程序处于错误状态,因此我必须不断重新启动程序。每次运行程序时,结构的地址都不一样。它们有很多,如果每次运行程序时地址都保持不变,那么调试就会容易得多 这些地址看起来几乎相似,但却不同。例如,一个结构的地址一次为0x003F5540,下一次为0x003E5540,下一次为0x00605540和0x004F5540 代码每次执行的都完全相同,所以我不知道为什么会看到略有不同的地址。

我有一个程序正在VisualStudio2010中调试。我在程序中出现了一个可再现的错误,我正在打印一些诊断信息。错误使程序处于错误状态,因此我必须不断重新启动程序。每次运行程序时,结构的地址都不一样。它们有很多,如果每次运行程序时地址都保持不变,那么调试就会容易得多

这些地址看起来几乎相似,但却不同。例如,一个结构的地址一次为0x003F5540,下一次为0x003E5540,下一次为0x00605540和0x004F5540

代码每次执行的都完全相同,所以我不知道为什么会看到略有不同的地址。我已关闭ASLR和DEP。每次运行程序时,我可以做些什么来获得相同的地址

谢谢

编辑-可能无法禁用堆和堆栈随机化:

没有“可能”,自从16位保护模式操作系统以来,地址随机化一直是每个操作系统的核心。否则,您不能两次运行同一进程。或选择重叠虚拟基址的两个进程

使用符号名而不是指针值,这就是调试符号的用途