【问题标题】:mdb's substitute for gdb's catch throw?mdb 替代 gdb 的 catch throw?
【发布时间】:2012-05-04 18:18:37
【问题描述】:

我不是 gdb 和 mdb 方面的专家,但我知道的是:-

      `(gdb) catch throw` 

任何时候抛出异常都会中断
我在 mdb 中是否有任何类似的命令会在任何时候引发异常时中断?

【问题讨论】:

    标签: gdb solaris mdbg


    【解决方案1】:

    不,这不存在;这是因为在 Solaris 上,它取决于您的编译器和/或正在使用哪个 C++ ABI 的编译选项(以及如何抛出异常)。

    mdb 并没有试图了解所有这些,gdb 在 Solaris 上也不是(如果您编译它,catch throw 将无法与旧式或新式 Sun CC 二进制文件一起使用) .

    您最好的选择是弄清楚“C++ ABI 钩子”是什么,即在 throw() 上调用了哪些隐藏/内部函数,并为它们设置断点。或者,一旦你找到/枚举了这些钩子,编写你自己的模块来实现 ::catch 命令(mdb 是可扩展的 - 模块化调试器)。

    编辑:(无耻插件)另见 this answer of mine(关于 C++ 异常和 DTrace;那里的“隐藏”函数名称也可用于 mdb 断点)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2012-06-04
      • 2010-12-14
      • 2013-11-10
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      相关资源
      最近更新 更多