首页 > 解决方案 > Qt 和 C++:应用程序仅在调试模式下崩溃

问题描述

我很难理解一些东西。所以我有一个使用带有 lambda 函数的 std::for_each 的方法。在这个 lambda 函数中,我做了一个 dynamic_cast。这只是一个小背景。此 dynamic_cast 崩溃。我不是在问它为什么会崩溃或如何修复它,因为我知道(我对已删除的对象进行了 dynamic_cast)。我的问题是为什么这只在调试模式下(在 Qt 中)崩溃?

我明白为什么它在调试时崩溃,但我不明白为什么它在发布时不会崩溃。几周前我在不同的代码上遇到了类似的问题,但两次崩溃都是分段错误。是因为 segfault 是一种未定义的行为,并且这种行为在 debug 和 release 之间是不同的吗?

谢谢。

标签: c++qtdebuggingcrashsegmentation-fault

解决方案


我假设您正在运行 Linux。如果是这样,您可以使用 gdb(使用 -g 标志进行编译)。在动态转换处设置断点。然后,您可以单步执行以下每个功能。或许这可以让你更好的理解qt中debug和release模式的区别。

这是有用的gdb 命令的一个很好的概述。


推荐阅读