【发布时间】:2013-05-10 09:23:18
【问题描述】:
我创建了一个 dll,它与一个服务器应用程序相连。现在的问题是,如果我从命令提示符运行服务器,那么 dll 将运行良好。但是如果我在visual studio中调试服务器,那么服务器会因为dll而崩溃。然后我彻底调试了它,并知道它在分配内存时崩溃了。我检查了所有可能的事情,内存覆盖,内存泄漏,但一切似乎都很好。
以前有人遇到过此类问题。为什么会这样?我也在互联网上搜索过,但我得到的只是“在发布模式下崩溃而不是在调试模式下”。
编辑:
我在窗口上收到以下消息:
Windows 在 tcas.exe 中触发了一个断点。 这可能是由于堆损坏,这表明 tcas.exe 或其已加载的任何 DLL 中存在错误。 这也可能是由于用户在 tcas.exe 具有焦点时按 F12。 输出窗口可能有更多的诊断信息。
如果我点击继续,那么他们不会有任何问题。
编辑:
抱歉,我忘了说这是我使用的调试版本,而不是发布版本。
【问题讨论】:
-
-
如果发生堆损坏,那么当我在命令提示符下运行应用程序时也会发生这种情况。我猜调试时内存放松更多。
-
不一定 - 可能会发生堆损坏,但由于发布版本中的检查要少得多,您通常不会注意到。调试版本故意注意到一些损坏(无论多么轻微)并为您崩溃。使用调试器查看问题所在。
-
@gbjbaanb:对不起,我忘了说这是我使用的调试版本,而不是发布版本。
-
当您运行带有调试器的程序时,您也会自动获得调试堆。它通过显示此消息并调用断点来告诉您什么时候搞砸了。没有收到此警告不意味着命令提示符解决了您的错误。