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


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

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

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

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

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

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

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

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

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

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