c++ - Qt 和 C++:应用程序仅在调试模式下崩溃
问题描述
我很难理解一些东西。所以我有一个使用带有 lambda 函数的 std::for_each 的方法。在这个 lambda 函数中,我做了一个 dynamic_cast。这只是一个小背景。此 dynamic_cast 崩溃。我不是在问它为什么会崩溃或如何修复它,因为我知道(我对已删除的对象进行了 dynamic_cast)。我的问题是为什么这只在调试模式下(在 Qt 中)崩溃?
我明白为什么它在调试时崩溃,但我不明白为什么它在发布时不会崩溃。几周前我在不同的代码上遇到了类似的问题,但两次崩溃都是分段错误。是因为 segfault 是一种未定义的行为,并且这种行为在 debug 和 release 之间是不同的吗?
谢谢。
解决方案
我假设您正在运行 Linux。如果是这样,您可以使用 gdb(使用 -g 标志进行编译)。在动态转换处设置断点。然后,您可以单步执行以下每个功能。或许这可以让你更好的理解qt中debug和release模式的区别。
这是有用的gdb 命令的一个很好的概述。
推荐阅读
- apache - 启用 FastCGI 应用程序 Dancer2 后,Apache 停止提供静态页面
- java - 接听弹出电话对话框时如何暂停活动?
- javascript - 如何创建一个弹出框,每次调用时都会填充数据?
- sql-server - Sql While循环不会增加变量
- swift - 编辑了 xcdatamodeld 的实体,但在 swift 中出现 Crash - Core Data
- android - 如何在模拟器android studio中设置密度
- c# - 与 WireMock.net 匹配的 XPath 请求
- c# - Unity - UWP:如何将 dll/nuget-package/references 导入我的项目
- node.js - 如何在我的中间件中添加 REST 请求以验证其他服务的凭据?
- firebase - Web 的 Firebase 分析不流向 BigQuery