gpt4 book ai didi

c++ - gdb catch 抛出然后忽略异常

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:44 25 4
gpt4 key购买 nike

我在多线程应用程序中发生崩溃,无论出于何种原因,我都无法在堆栈部分展开之前捕获异常。

所以现在我正尝试通过连接 gdb 并使用 catch throw 来捕获它。但是,我收到了许多其他不相关的和捕获的异常。我怎么能忽略这些呢?

我试过 ignore 1 1000000,但这并不仅仅忽略当前关注的异常,而是忽略所有 catch throw 异常。

有什么想法可以让我只忽略那个特定的吗?例如也许通过文件和行号?

最佳答案

从 7.9 版本开始,gdb 包含了一些方便的函数,例如 $_caller_is$_any_caller_is。这些可以用作断点的条件,使其仅在看到特定调用堆栈时停止。

因此,例如,如果您知道抛出异常的位置,您可以执行如下操作:

(gdb) catch throw if $_any_caller_is("functionname")

但是,如果您知道 throwing 函数,在我看来,在特定的 throw 处设置断点会更简单。

在某些情况下,另一种选择是按类型过滤异常。自版本 7.7 起,此功能内置于 catch throw 中。此表单接受匹配类型名称的正则表达式:

(gdb) catch throw NameOfType

关于c++ - gdb catch 抛出然后忽略异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42921869/

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