我有一个要在Visual Studio 2010中调试的程序。该程序中出现可重现的错误,并且正在打印一些诊断信息。该错误使程序处于错误状态,因此我必须不断重新启动程序。每次运行程序时,结构的地址都不同。它们很多,如果每次运行程序时地址都保持不变,调试起来会容易得多。
地址看起来几乎相似,但有所不同。例如,一个结构的地址一次为0x003F5540,下一次为0x003E5540,下一次为0x00605540和0x004F5540。
每次代码执行完全相同,所以我不知道为什么看到略有不同的地址。我已经关闭了ASLR和DEP。每次运行该程序我该怎么做才能获得相同的地址?
谢谢
编辑-可能无法禁用堆和堆栈随机化:
1st call to "new" always returns different addresses. How do I get it to return the same address?
最佳答案
自从16位保护模式以来,地址随机化一直是每个操作系统的核心。否则,您将无法两次运行相同的进程。或两个进程选择了重叠的虚拟基址。
使用符号名称代替指针值,这就是调试符号的作用!
关于c++ - 在多次运行中调试具有相等内存地址位置的程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28468822/