Отладка в VB.NET
Отладка потоков
В отладчике VB.NET предусмотрено еще одно важное средство – просмотр всех выполняемых потоков (threads) приложения. Переключение потоков в отладчике играет очень важную роль в отладке многопоточных приложений. Мы вернемся к этой теме в главе 10 при знакомстве с многопоточным программированием.
Управление исключениями
На первый взгляд управление исключениями кажется экзотикой, не связанной с практической работой. Чтобы оценить эту возможность по достоинству, достаточно оказаться в ситуации, когда на стадии тестирования возникают многочисленные исключения (см. главу 7) и возникает необходимость в тонкой настройке действий, выполняемых при возникновении исключений. Это делается в диалоговом окне, вызываемом командой Debug › Windows › Exceptions. В этом окне вы указываете, как должен действовать отладчик при обнаружении исключений определенного типа. Допустим, вы хотите, чтобы при возникновении ошибок доступа управление передавалось отладчику.
- Выберите исключение Win32Exceptions › 0xc0000005.
- Установите в группе When the exception is thrown переключатель Break into the debugger.
В результате отладчик будет автоматически вызываться при возникновении ошибок доступа (0xc0000005), и вы сможете точно определить, в какой строке программы это произошло.
Отладка управляемого и неуправляемого кодов
Управляемым (managed) в .NET называется код, выполняемый при участии CLR. В управляемом коде нельзя использовать указатели, а выделением/освобождением памяти занимается CLR. Неуправляемый код не подчиняется этим ограничениям. Он может создаваться в C++ и С#, но в VB.NET такая возможность не поддерживается.
Управляемый код усложняет работу некоторых средств отладки. Дело в том, что исполнительная среда CLR прикладывает значительные усилия к оптимизации выполняемого кода, что затрудняет получение правильных кадров стека (то есть адресов всех вызванных функций). Кроме того, в зависимости от специфики программы оптимизация может достичь такой степени, что отображаемый в отладчике код плохо ассоциируется с исходным текстом. Впрочем, по сравнению с преимуществами новой среды отладки VB.NET эти проблемы уходят на второй план.