Как сделать, чтобы отладчик VC++ ломался в исключениях?

Я пытаюсь отладить проблему в DLL, написанной на C, которая продолжает вызывать нарушения прав доступа. Я использую Visual C++ 2008, но код прямо C.

Я привык к Delphi, где, если во время работы под отладчиком возникает исключение, программа немедленно переходит к отладчику и дает вам возможность проверить состояние программы. В Visual C++ все, что я получаю, это сообщение на вкладке "Вывод":

First-chance exception at blah blah blah: Access violation reading location 0x04410000. Нет перерывов, ничего. Он просто идет и раскручивает стек, пока не вернется в мой Delphi EXE, который распознает что-то не так и предупреждает меня об этом, но к этому моменту я потерял несколько слоев стека вызовов и не знаю, что происходит.

Я пробовал другие методы отладки, но все, что он делает, происходит в глубине вложенного цикла внутри макроса C, который вызывается более 500 раз, и это лишь немного выше моего умения (или моего терпения) для отслеживания.

Я полагаю, что должен быть какой-то способ получить исключение "первого шанса", чтобы фактически дать мне "шанс" справиться с этим. Вероятно, есть какой-то параметр конфигурации "немедленно прервать при исключениях из первого шанса", о котором я не знаю, но, похоже, это не так уж и заметно.

Кто-нибудь знает где это и как его включить?

2 ответа

Решение

В меню " Отладка" выберите " Исключения" и установите флажки тех исключений, для которых вы хотите, чтобы отладчик работал. "Нарушение прав доступа" в разделе "Исключения Win32".

Вы также можете создать точку останова данных, используя адрес, указанный в строке "Исключение первого шанса в...".

Исходя из ответа Джеймса, исключения, которые вы ищете, находятся в разделе исключений Win32. Вы должны увидеть Access Violation там.

Другие вопросы по тегам