Получение трассировки стека в исключениях C ++ - PullRequest
3 голосов
/ 30 декабря 2010

Тот факт, что трассировка стека / функции предоставляется в исключениях Java / C #, действительно полезен.Есть ли удобный способ сделать это в C ++ или мне нужно было бы добавлять дополнительные данные в каждый метод / функцию?

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

Большинство отладчиков можно настроить для приостановки вашей программы каждый раз, когда выдается исключение (любое исключение или исключение, для которого нет обработчика), так что вы можете наблюдать за стеком вызовов.

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

0 голосов
/ 30 декабря 2010

Некоторые API-интерфейсы ОС предусматривают трассировку стека, я знаю, что в Windows API есть StackWalk64 или что-то подобное, что может выполнять трассировку стека.

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

0 голосов
/ 30 декабря 2010

Если вы рассматриваете возможность добавления метаданных к вашим исключениям, вы можете рассмотреть возможность использования повышения обработки исключений . boost :: exception позволяет добавлять информацию к исключению после его создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...