gpt4 book ai didi

c++ - 如何在 C 语言的 gdb 中调试 St9bad_alloc 失败?

转载 作者:可可西里 更新时间:2023-11-01 17:36:26 24 4
gpt4 key购买 nike

我有一个程序失败了:

terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc

我想这与 malloc/free 有关,但我不知道是哪一个。

我可以在 gdb 中设置什么断点来中断错误,以便我可以查看堆栈跟踪?

该程序是 C 和 C++ 的组合,使用 gcc 3.4.2 编译。

最佳答案

导致异常的并不是真正的 malloc/free,它是“新的”,它肯定在您的应用程序的 C++ 部分中。看起来您提供的参数对于"new"分配来说太大了。

'std::bad_alloc' 是由以下代码引起的例如:

 int * p = new int[50000000];

当您将崩溃转储加载到 gdb 时,回溯会说什么?如果不能生成dump,可以要求GDB停止when exception is thrown or caught .遗憾的是,某些版本的 GDB 仅支持以下语法:

catch throw

它允许您在抛出任何异常时中断应用程序。不过在help中看到应该可以运行

catch throw std::bad_alloc

在较新的版本中。

别忘了:

(gdb) help catch

是其他有用信息的良好来源。

关于c++ - 如何在 C 语言的 gdb 中调试 St9bad_alloc 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com