Nat*_*man 9 c c++ debugging gdb bad-alloc
我有一个程序失败:
terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
Run Code Online (Sandbox Code Playgroud)
我想这与malloc/有关free,但我不知道哪一个.
我可以在gdb中设置什么断点来破坏错误,以便我可以查看堆栈跟踪?
该程序是C和C++的组合,使用gcc 3.4.2编译.
ale*_*xkr 14
它不是真正的malloc/free导致异常,它是"new",它绝对是你应用程序的C++部分.看起来您提供的参数太大而无法分配"新".
'std :: bad_alloc'是由以下代码引起的,例如:
int * p = new int[50000000];
Run Code Online (Sandbox Code Playgroud)
将崩溃转储加载到gdb时,backtrace会说什么?如果无法生成转储,则可以在抛出或捕获异常时让GDB停止.不幸的是,某些版本的GDB仅支持以下语法:
catch throw
Run Code Online (Sandbox Code Playgroud)
它允许您在抛出任何异常时中断应用程序.但是,在帮助中,您会看到它应该可以运行
catch throw std::bad_alloc
Run Code Online (Sandbox Code Playgroud)
在较新的版本中.
不要忘记:
(gdb)帮忙抓住
是其他有用信息的良好来源.
| 归档时间: |
|
| 查看次数: |
17998 次 |
| 最近记录: |