程序在调试模式下崩溃:“无法解散”?

Posted

技术标签:

【中文标题】程序在调试模式下崩溃:“无法解散”?【英文标题】:Program crashes in debug mode: "unable to demangle"? 【发布时间】:2016-06-04 17:07:25 【问题描述】:

在 Eclipse CDT 中,我的代码无法在调试模式下运行。我收到以下消息:

/build/gdb-HnfxP_/gdb-7.10/gdb/cp-support.c:1595: demangler-warning: 无法对 '_ZdvI7Vector3dESt6vectorIDTdvcvT__EcvT0__EESaIS4_EERKS1_IS2_SaIS2_EERKS1_IS3_SaIS3_EE' 进行解角(解角器因信号 11 而失败) 无法转储内核,请在下次执行 GDB 之前使用 `ulimit -c unlimited'。

使用https://d.fuqu.jp/c++filtjs/发现错位符号对应

std::vector<decltype (((Vector3)())/((double)())), std::allocator<decltype (((Vector3)())/((double)()))> > operator/<Vector3, double>(std::vector<Vector3, std::allocator<Vector3> > const&, std::vector<double, std::allocator<double> > const&)

为什么这会给我一个错误,我该如何解决?

【问题讨论】:

这看起来像是一个 GDB 问题,考虑添加一个适当的 GDB 标记,并带有 minimal reproducible example。它也看起来像一个 GDB 错误,可能是这个:sourceware.org/bugzilla/show_bug.cgi?id=19330? 【参考方案1】:

我在gdb-7.10 上重现了此故障,并且可以确认此故障已在gdb-7.11 及更高版本中得到修复。我还没有找到修复此失败的确切提交。

除了升级到更高版本的 GDB 之外,您无法修复此问题。

【讨论】:

在我看到你的答案之前,我来这里是为了说同样的话——我从 gdb-7.10 升级到 gdb-7.11 并解决了这个问题。谢谢!

以上是关于程序在调试模式下崩溃:“无法解散”?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序仅在调试模式下崩溃

选择发布模式时应用程序崩溃但在调试模式下完美运行

程序仅在调试器外的发布模式下崩溃

应用程序在发布时崩溃,但在调试模式下工作正常

QPainter::begin 在调试模式下使程序崩溃

应用程序在非调试模式下崩溃