Поиск, где std :: out_of_range генерируется std :: vector.at () - PullRequest
6 голосов
/ 07 июля 2011

Обычно я оставляю это необработанным, и отладчик (gdb, Eclipse CDT) показывает мне стек вызовов. К сожалению, код вызывается сторонней библиотекой, которая принимает все исключения. Я могу перехватить исключение перед сторонней библиотекой, однако не вижу стека вызовов (разматывание стека?).

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

Ответы [ 2 ]

5 голосов
/ 07 июля 2011

Поможет ли поймать ? Вы можете прервать работу при возникновении исключения, введя команду catch throw в GDB. В Eclipse вы можете сделать это через консоль GDB. См. этот вопрос .

4 голосов
/ 07 июля 2011

Вы можете поместить точку останова в конструкторе для объекта исключения. Так как это происходит до того, как сгенерировано исключение, вы получаете большую прозрачность в вызывающем коде.

...