mdb替代gdb的抓捕?

时间:2012-05-04 18:18:38

标签: gdb solaris mdbg

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

      `(gdb) catch throw` 

任何时候抛出异常都会中断    我在mdb中有任何类似的命令,只要抛出异常就会中断吗?

1 个答案:

答案 0 :(得分:2)

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

mdb并未试图了解所有这些,并且Solaris上的gdb也不是(如果您编译它,catch throw将无法使用旧版本或新版本式Sun CC二进制文件)。

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

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