Отладка приложений для Microsoft .NET и Microsoft Windows [Джон Роббинс] (pdf) читать постранично, страница - 3

-  Отладка приложений для Microsoft .NET и Microsoft Windows  3.21 Мб, 731с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Джон Роббинс

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

. 74
Как и что утверждать . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Утверждения в .NET Windows Forms или консольных приложениях . . . . . . . . . . . . 83
Утверждения в приложениях ASP.NET и Web=сервисах XML . . . . . . . . . . . . . . . . . . . . . . 92
Утверждения в приложениях C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Различные типы утверждений в Visual C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
assert, _ASSERT и _ASSERTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
ASSERT_KINDOF и ASSERT_VALID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Главное в реализации SUPERASSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Trace, Trace, Trace и еще раз Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Трассировка в Windows Forms и консольных приложениях .NET . . . . . . . . . . . . . . 131
Трассировка в приложениях ASP.NET и Web=сервисах XML . . . . . . . . . . . . . . . . . . . . . 133
Трассировка в приложениях C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Комментировать, комментировать и еще раз комментировать . . . . . . . . . . . . . . . . . . . . . . . . . 135
Доверяй, но проверяй (Блочное тестирование) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Ч А С Т Ь

I I

ПРОИЗВОДИТЕЛЬНАЯ ОТЛАДКА
Глава 4 Поддержка отладки ОС и как работают отладчики Win32

141
142

Типы отладчиков Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Отладчики пользовательского режима . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Отладчики режима ядра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Поддержка отлаживаемых программ операционными системами Windows . . . . . . . . . 148
Отладка Just=In=Time (JIT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Автоматический запуск отладчика (опции исполнения загружаемого
модуля) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
MiniDBG — простой отладчик Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
WDBG — настоящий отладчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Чтение памяти и запись в нее . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Точки прерывания и одиночные шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Таблицы символов, серверы символов и анализ стека . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Шаг внутрь, Шаг через и Шаг наружу . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Итак, вы хотите написать свой собственный отладчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Что после WDBG? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Глава 5 Эффективное использование отладчика
Visual Studio .NET

195

Расширенные точки прерывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Подсказки к точкам прерывания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Быстрое прерывание на функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Модификаторы точек прерывания по месту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Несколько точек прерывания на одной строке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Окно Watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Вызов методов в окне Watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Команда Set Next Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

Оглавление

Глава 6 Улучшенная отладка приложений .NET
в среде Visual Studio .NET

VII

215

Усложненные точки прерывания для программ .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Условные выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Окно Watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Автоматическое развертывание собственных типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Советы и хитрости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
DebuggerStepThroughAttribute и DebuggerHiddenAttribute . . . . . . . . . . . . . . . . . . . . . . . 224
Отладка в смешанном режиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Удаленная отладка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
ILDASM и промежуточный язык Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Начинаем работу с ILDASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Основы CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
MSIL, локальные переменные и параметры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Важные команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Другие инструменты восстановления алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Глава 7 Усложненные технологии неуправляемого кода
в Visual Studio