我可以强制一个程序每次都在内存中的同一个地方启动吗?

我正在debugging似乎是内存覆盖,它似乎发生在内存中的相同的地方,但由于程序的起始地址是不同的每一次我不能可靠地设置Visual Studio中的数据断点。

有没有办法做到这一点? 我在Windows 8.1上使用VS. 一位同事认为有一个提示你可以通过,但不知道是什么。 我尝试了谷歌search,但失败了,因为我不知道要search什么或如何来说话。

我遇到的exception是由Application Verifier发现的,我将尝试对代码库中的分配器做一些魔术,以查看是否可以通过这种方式获取更多信息。

以下是最近的三个例外情况,您可以看到它们很接近但并不相同:

xx_win32_debug.exe中0xf5cdb1cc的第一次机会exception:0xC0000005:访问冲突读取位置0x9dfed000。

xx_win32_debug.exe中0xf625b1cc的第一次机会exception:0xC0000005:访问冲突读取位置0x9eadd000。

xx_win32_debug.exe中0xf5ccb1cc的第一次机会exception:0xC0000005:访问冲突读取位置0x9ddbd000。

如果我可以完全提供另一种方法;

一旦抛出异常,只需爬上调用堆栈 ,找到导致覆盖的代码行。 在这一刻之前设置一个断点,您应该能够搜索导致异常的步骤。

试图从特定的存储器地址向后工作看起来过于困难,并且容易出现各种不可重现的情况。 例如,我想如果有问题的内存是从堆中分配的,那么你的程序的起始地址不会有什么不同。