c++ - 程序在调试器中运行时触发断点,但如果在没有调试器的情况下运行则可以正常工作

标签 c++ debugging dll crash

我创建了一个 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/

相关文章:

c++ - CMake + Qt 翻译系统的正确工作流程

c++ - 通过指针和名称将函数传递给另一个函数

c++ - 为什么我无法访问 main 中的图像数据?

java - 调试递归函数

c++ - 为什么 Python 而不是 Qt 需要 DLL 中的 GetMessage 消息抽取?

c++ - operator= 结合 new 运算符的使用

WCF 消息路由调试错误 - 多个 header

node.js - 调试Electron应用程序: Breakpoints not working (“Breakpoint ignored because generated code not found” )

c++ - 指定给 RtlValidateHeap DLL 的地址无效

dll - 监控应用程序对 DLL 的调用