GDB 捕获抛出,然后忽略异常
gdb catch throw and then ignore exceptions
我在多线程应用程序中崩溃,无论出于何种原因,我都无法在堆栈部分展开之前捕获异常。
所以现在我试图通过连接 gdb 并使用 catch throw
来捕获它。但是,我得到了许多其他不相关和捕获的异常。我怎么能忽略这些呢?
我尝试了ignore 1 1000000
,但这不仅忽略当前关注的异常,而且忽略catch throw
异常。
任何想法我只能忽略那个特定的? 例如,也许通过文件和行号?
从 7.9 版本开始,gdb 包含了一些方便的功能,如 $_caller_is
和 $_any_caller_is
。 这些可以用作断点上的条件,使其仅在看到某个调用堆栈时才停止。
因此,例如,如果您知道引发异常的位置,则可以执行以下操作:
(gdb) catch throw if $_any_caller_is("functionname")
但是,如果您知道抛出函数,在我看来,在该特定throw
处设置断点会更简单。
在某些情况下,另一种选择是按类型筛选异常。 此功能自版本 7.7 起内置于 catch throw
中。 此表单接受与类型名称匹配的正则表达式:
(gdb) catch throw NameOfType
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- C++中的赋值发生,尽管右侧出现异常
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 从构造函数抛出异常时如何克服内存泄漏
- 异常属于C++中的线程还是进程
- 当类定义不可见时捕获异常
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- boost::asio如何生成多个协同程序,然后加入它们
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 为什么异常不退出程序?
- 在std::thread中,joinable()然后join()线程安全吗
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- GDB 捕获抛出,然后忽略异常
- 我想捕获一个异常,并将其绑定到我自己的异常中,然后向上抛出
- 是否可以将异常传递给处理程序,然后重新引发原始异常