2012-05-04 53 views
0

我不是在gdb和mdb但我知道很多专家认为: -mdb的代替gdb的catch throw?

 `(gdb) catch throw` 

这将中断任何时候抛出一个异常
我要在MDB任何类似的命令,它会随时中断抛出异常?

回答

2

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

mdb没有试图知道所有这些,Solaris上也没有gdb(如果编译它,catch throw将不适用于旧式或新式Sun CC二进制文件)。

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

编辑:(无耻插头)也看到this answer of mine(关于C++异常和DTrace的;“隐藏”功能名有可用于mdb断点以及)。