我创建了一个 dll,它与服务器应用程序相连。现在的问题是,如果我从命令提示符运行服务器,那么 dll 将运行良好。但是,如果我在 visual studio 中调试服务器,那么服务器会因为 dll 而崩溃。然后我彻底调试它,知道它在分配内存时崩溃了。我检查了所有可能的事情,内存覆盖,内存泄漏,但一切似乎都很好。
以前有人遇到过这种类型的问题。为什么会这样?我也在互联网上搜索过,但我得到的只是“在 Release模式下崩溃,而不是在 Debug模式下崩溃”。
编辑:
我在窗口中收到以下消息:
Windows 已在 tcas.exe 中触发断点。 这可能是由于堆损坏,这表明 tcas.exe 或它加载的任何 DLL 中存在错误。 这也可能是由于用户在 tcas.exe 具有焦点时按了 F12。 输出窗口可能有更多的诊断信息。
如果我点击继续,那么他们不会有任何问题。
编辑:
抱歉,我忘了说这是我使用的调试版本,而不是发布版本。
最佳答案
在尝试了一切之后,使用了所有的排列组合并在这上面花费了我大量的时间,我强行改变了函数的逻辑。现在它终于开始工作了。但是,我仍在寻找我原来问题的答案。
我也不明白的一件事是,我在这里读到了和我一样的问题 http://www.debuginfo.com/tips/userbpntdll.html当我为我的应用程序启用完整页面堆时,如博客中所述,我的应用程序运行良好。调试时不会崩溃。我首先启用了它,以便我可以获得有关堆损坏的详细信息。我希望这篇博客能帮助其他遇到类似问题的人。
关于c++ - 程序在调试器中运行时触发断点,但如果在没有调试器的情况下运行则可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479000/