Не 100%, если это сработает, но вы можете попытаться имитировать работу точек захвата GDB: см. http://www.delorie.com/gnu/docs/gdb/gdb_31.html Ключевая информация - это:
"Чтобы остановить непосредственно перед вызовом обработчика исключений, вам необходимо знать о реализации. В случае GNU C ++ исключения вызываются путем вызова библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватывал все исключения до того, как произойдет раскрутка стека, установите точку останова на __raise_exception "
Итак, я предполагаю, что вы можете установить собственное исключение __raise_exception, например, с помощью трюка LD_PRELOAD.