Как сделать, чтобы отладчик 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 там.