Поделиться через


Неразрешенные точки останова (бу точки останова)

Если для точки останова задано имя подпрограммы, которое не было загружено, точка останова называется отложенной, виртуальной или неразрешенной точкой останова. (Эти термины используются взаимозаменяемо.) Неразрешенные точки останова не связаны с какой-либо определенной нагрузкой модуля. Каждый раз, когда загружается новое приложение, оно проверка для этого имени подпрограммы. Если эта подпрограмма появится, отладчик вычисляет фактический закодированный адрес виртуальной точки останова и включает точку останова.

Если задать точку останова с помощью команды bu , точка останова считается неразрешенной автоматически. Если эта точка останова находится в загруженном модуле, точка останова по-прежнему включена и работает нормально. Однако если модуль будет выгружен и перезагружается, эта точка останова не исчезает. С другой стороны, точка останова, которую вы устанавливаете с помощью bp , немедленно разрешается в адрес.

Существует три основных различия между точками останова в секунду и точками останова bu :

  • Расположение точки останова в секунду всегда преобразуется в адрес. Если изменение модуля перемещает код, в котором была задана точка останова в секунду , точка останова остается в том же адресе. С другой стороны, точка останова bu остается связанной с символьным значением (как правило, символом и смещением), который использовался, и отслеживает это символическое расположение, даже если его адрес изменяется.

  • Если адрес точки останова в секунду найден в загруженном модуле и если этот модуль позже выгрузится, точка останова удаляется из списка точек останова. С другой стороны, точки останова бу сохраняются после повторяющихся выгрузок и загрузки.

  • Точки останова, заданные с помощью bp, не сохраняются в рабочих областях WinDbg. Точки останова, заданные с помощью bu , сохраняются в рабочих областях.

Управление точками останова адресов и неразрешенными точками останова

Точки останова адресов можно создать с помощью команды bp (Set Breakpoint) или команды bm (Set Symbol Breakpoint) при включении переключателя /d. Неразрешенные точки останова можно создать с помощью команды bu (Задать неразрешенную точку останова) или команду bm , если переключатель /d не включен. Команды, которые отключают, разрешают и изменяют точки останова, применяются ко всем типам точек останова. Команды, отображающие список точек останова, включают все точки останова и указывают тип каждого. Список этих команд см. в разделе "Методы управления точками останова".

В диалоговом окне "Точки останова WinDbg" отображаются все точки останова, указывающие на неразрешенные точки останова с нотацией "u". Это диалоговое окно можно использовать для изменения любой точки останова. Текстовое поле команды в этом диалоговом окне можно использовать для создания любой точки останова; если тип опущен, создается неразрешенная точка останова. Дополнительные сведения см. в разделе "Изменить" | Точки останова. При настройке точки останова с помощью мыши в окне Дизассембли WinDbg или окне источника отладчик создает неразрешенную точку останова.