Я пытаюсь отладить проблему в DLL, записанном в C, который продолжает вызывать нарушения прав доступа. Я использую Visual C++ 2008, но код является прямым C.
Я привык к Delphi, где, если исключение происходит при выполнении под отладчиком, программа сразу повредится к отладчику, и это даст Вам шанс исследовать состояние программы. В Visual C++, тем не менее, все, что я получаю, является сообщением на вкладке Output:
First-chance exception at blah blah blah: Access violation reading location 0x04410000.
Никакие повреждения, ничто. Это просто идет и раскручивает стек, пока это не вернулось в моем Delphi EXE, который распознает, что что-то неправильно и предупреждает меня там, но той точкой я потерял несколько слоев стека вызовов, и я не знаю то, что продолжается.
Я попробовал другие методы отладки, но независимо от того, что это делает, происходит глубоко во вложенном цикле в макросе C, это становится названным больше чем 500 раз, и это просто немного вне моего навыка (или моего терпения) для трассировки через.
Я полагаю, что должен быть некоторый способ заставить исключение "первого шанса" на самом деле давать мне "шанс" обработать его. Существует, вероятно, некоторое "повреждение сразу на параметре конфигурации" исключений первого шанса, о котором я не знаю, но это, кажется, не все это поддающееся обнаружению.
Кто-либо знает, где это и как включить его?
В меню Отладка выберите Исключения и отметьте галочками исключения, которые вы хотите, чтобы отладчик прерывал. "Access Violation" находится в разделе "Win32 Exceptions."
.Вы также можете создать точку останова данных, используя адрес, указанный в строке "First-chance exception at...".
В продолжение ответа Джеймса, исключения, которые вы ищете, находятся в разделе исключений Win32. Там вы должны увидеть Access Violation.