Заменой mdb броска броска gdb?
Я не очень хорошо разбираюсь в GDB и MDB, но я знаю следующее:
`(gdb) catch throw`
Это будет прерываться каждый раз, когда выдается исключение
Есть ли у меня аналогичные команды в MDB, которые будут прерываться каждый раз, когда возникает исключение?
1 ответ
Нет, этого как такового не существует; Это связано с тем, что в Solaris зависит от вашего компилятора и / или параметров компиляции, какой C++ ABI используется (и как создаются исключения).
mdb
не пытается узнать все это, и не является gdb
в Solaris (если вы его скомпилируете, catch throw
не будет работать с двоичными файлами Sun CC старого или нового стиля).
Ваш лучший вариант - выяснить, что такое "C++ ABI-хуки", то есть какие скрытые / внутренние функции вызываются throw()
и точка останова тех. Или, как только вы нашли / перечислили эти хуки, напишите свой собственный модуль, который бы реализовывал ::catch
команда (mdb
расширяемо - модульный отладчик).
Изменить: (бесстыдный плагин) см. Также этот мой ответ (относительно исключений C++ и DTrace; "скрытые" имена функций там могут быть использованы для mdb
точки останова также).