Как отладить сбой VB6? - PullRequest
2 голосов
/ 09 июня 2011

У меня есть приложение, которое после компиляции работает отлично. Однако, если я запускаю его в среде VB6, он постоянно и довольно случайно вылетает из IDE, но только когда я предпринимаю действия с приложением (например, наведите на него курсор мыши, щелкните на чем-нибудь, переместите окно и т. Д.)

Приложение делает много вещей, которые никто не связывает с VB6: SIP, интерфейсы виртуальных звуковых карт, кодирование / декодирование звука и т. Д. ... так может быть, но сбои кажутся случайными.

Сбой всегда происходит в модуле vba6.dll (по крайней мере, так говорит диалог сбоя). Учитывая, что MS больше не поддерживает VB6, что я могу сделать для его отладки?

Я пробовал на XP и Win7 с одинаковыми результатами.

1 Ответ

3 голосов
/ 09 июня 2011

Вполне возможно, что некоторые функции API / DLL не совместимы с VB IDE. Иногда мы пишем разные коды для IDE и EXE, поэтому наши функции создания подклассов Windows и API-графики расположены в другой dll (или ocx), чтобы избежать сбоев. Кроме того, мы используем обработчик GPF (SetUnhandledExceptionFilter и связанные с ним функции API) в нашем программном обеспечении, но он включен только в EXE - не работает в IDE в любом случае. Наши GPF встречались в основном в EXE тоже:)

Для отладки вы можете просто исключить некоторые пути кода, особенно связанные с сообщениями / подклассами окон, глобальными перехватами, рисованием и обратными вызовами API. Вы можете установить лучший отладчик (даже VC можно использовать) для просмотра стека вызовов - иногда это включает имена системных функций, намекающие на операцию erroneus.

...