Как прервать работу, когда в GDB выбрасывается определенный тип исключения?

Согласно документации, я могу разбить определенный тип исключения, используя условные точки останова. Однако синтаксис условия мне не очень понятен:

condition bnum <expression>

Глядя на синтаксис выражения, я думаю, что это тот шаблон, который мне нужен:

{type} addr

Однако я не знаю, что я должен пройти для аргумента адрес . Я пробовал следующее:

(gdb) catch throw
(gdb) condition 1 boost::bad_function_call *

Но это не работает (gdb прерывает все типы исключений).

Кто-нибудь может помочь?


Обновление

Я также попробовал предложение @ Adam, но это привело к сообщению об ошибке:
(gdb) catch throw boost::bad_function_call
Junk at end of arguments.

Без boost :: пространство имен:

(gdb) catch throw bad_function_call
Junk at end of arguments.


Временное решение

Взлом конструктора bad_function_call работает.
50
задан jww 11 November 2017 в 19:37
поделиться