Установка точки останова при вызове abort ()

Я отлаживаю приложение и по какой-то причине (в чем я не совсем уверен) при закрытии приложения abort() называется. Я хотел бы попытаться найти причину этого, поэтому я хочу установить точку останова на abort() так что я могу увидеть трассировку стека и, надеюсь, выяснить причину, по которой он был вызван, вместо изящного выхода.

Я использую Microsoft Visual Studio 2012 (обновление 3) и имею объявление только для abort() функция (в stdlib.h) и поэтому я не могу установить точку останова. Есть ли способ обойти это?

1

Решение

Вам не нужно делать ничего особенного. abort вызов из программы C / C ++, созданной Visual Studio, выдает следующее сообщение:

---------------------------
Библиотека отладки Microsoft Visual C ++
---------------------------
Ошибка отладки!
Программа: ...
R6010
- abort () был вызван
(Нажмите «Повторить» для отладки приложения)
---------------------------
Прервать Повторить Игнорировать
---------------------------

Нажатие «Повторить» открывает отладчик с полным стеком вызовов. Эта функциональность доступна как для конфигураций Debug, так и для Release, когда программа работает в автономном режиме и в режиме отладчика. В конфигурации выпуска диалоговое окно отличается, оно содержит кнопку «Разорвать», которая открывает отладчик, как «Повторить» в конфигурации отладки.

3

Другие решения

Просто для отладки, вы можете переопределить abort Функция и установить точку останова внутри.

void abort()
{
std::cout << "aborting" << std::endl; // put break here...
exit(-1);
}
0

В случае Linux gdbпосле удара abortВы можете легко увидеть трассировку стека с помощью команды bt, Не нужно добавлять дополнительную точку останова.

0