Как сделать, чтобы отладчик VC ++ ломался в исключениях? - PullRequest
13 голосов
/ 15 апреля 2010

Я пытаюсь отладить проблему в 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 ]

17 голосов
/ 15 апреля 2010

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

1 голос
/ 15 апреля 2010

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

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

...