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


Заметки о выпуске

WinDbg logo with a magnifying glass inspecting bits.Логотип WinDbg с увеличивающимся стеклом, проверяющим биты.

В этом разделе содержатся сведения о новых возможностях WinDbg. Более ранние версии были выпущены как Предварительная версия WinDbg.

1.2506.12002.0

Новые возможности

WinDbg теперь поставляется с отладчиками в режиме консоли (cdb.exe/ ntsd64.exe / kd.exe)! Чтобы различать двоичные файлы друг от друга и не мешать существующим копиям инструментов, двоичные файлы включают имя архитектуры:

  • cdbARM64.exe / cdbX64.exe / cdbX86.exe
  • kdARM64.exe / kdX64.exe / kdX86.exe
  • ntsdARM64.exe / ntsdX64.exe / ntsdX86.exe

Дополнительные возможности:

  • Заголовок окна инструментов модели данных можно настроить с помощью команды $OpenDmoToolwindow, а также изменить его с помощью контекстного меню заголовка.
  • Новый параметр отладчика позволяет включить параллельное скачивание символов через HTTP. Этот параметр включен по умолчанию.

Исправления ошибок

  • Исправлен способ сохранения целевого пути для файлов дампа, открытых с помощью командной строки (-z) для успешного открытия из меню "Последние".
  • Исправлен сбой в окне редактора скриптов.
  • Исправлено, как WinDbg обрабатывает несогласованные окончания строк в исходных файлах, открытых в окне источника, чтобы обеспечить более согласованное представление исходных файлов.
  • Исправлена проблема, из-за которой учетные данные не обновлялись для серверов символов HTTP при использовании новой функции параллельного скачивания.
  • Исправлена проблема, из-за которой свойства объектов модели данных не перечислялись должным образом в расширениях JavaScript.
  • Исправлена проблема, из-за которой текст столбца исчез при переупорядочении с помощью щелчка и перетаскивания.
  • Исправлена проблема, из-за которой настройка фильтрации событий с помощью параметров командной строки не применялась к целевому объекту отладки при запуске.
  • Исправлена проблема, из-за которой иногда при откреплении окна инструментов появлялось пустое окно.
  • Исправлена проблема, из-за которой не удалось выполнить отладку мини-модулей эмулированных процессов X64 на компьютерах ARM64.
  • Исправлена проблема, из-за которой неоднозначные точки останова вызывали сбой в отладчике.
  • Исправлена проблема, из-за которой GDBServer произошел сбой при завершении процесса при отладке динамического процесса Linux.
  • Исправлено несколько проблем, связанных с отладкой расширений JavaScript (.scriptdebug), включая лучшее перечисление свойств и исправление проблемы с сбоем.

Общие улучшения пользовательского интерфейса

  • Всплывающее окно предложения команды выравнивается с курсором и отображает только предлагаемые завершения, а не все перед курсором.
  • Диалоговое окно запуска целевой ошибки отладки содержит дополнительные сведения, а для открытых сбоев дампа предоставляет гиперссылку на не удалось открыть TSG-файл дампа.
  • Заголовки инструментальных окон имеют то же контекстное меню, что и закрепленная вкладка.
  • Визуальные улучшения в окнах "Локальные", "Контрольные" и "Модели".
  • Отладка временных путешествий (TTD) обновлена до версии 1.11.532. Дополнительные сведения см . в заметках о выпуске TTD.

1.2502.25002.0

Новые возможности

Командное окно IntelliSense

Командная строка ввода автоматически отображает предлагаемые завершения, когда первый типизированный символ является . (точка), ! (восклицательный знак) или $ (доллар). Предложения также можно вызвать с помощью сочетания клавиш Ctrl + Space

Отладка моментальных снимков

При локальной отладке динамических процессов отладчик может создавать моментальные снимки процесса и переключаться между моментальными снимками и динамическим процессом с помощью значков на вкладке "Расширения". Аналогичным образом отладчик может подключиться к моментальному снимку процесса, не приостанавливая его с помощью snapshot:pid=<process pid in hex> строки протокола в разделе "Подключение к удаленному отладчику".

Новые API модели данных

  • Debugger.Utility.Symbols.GetTypeInformation

Он вернет сведения о типе, связанные с любым входным объектом. Существует необязательный аргумент, который позволяет автоматически разыменование указателей на один уровень, если вы действительно хотите получить тип под любым указателем (или ссылкой).

  • Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)

Создает новый фильтр шагов. Он находится в этом пространстве имен, рядом с API для создания точек останова.

  • Debugger.State.StepFilters

Возвращает список фильтров шагов с идентификатором свойств, описанием, типом, шаблоном и IsEnabled. Есть метод .Remove() для объектов, фильтрующих шаги.

Улучшен опыт отладки CLR без clrcomposition.dll

Распространяемый компонент dbgeng.dll теперь поддерживает улучшенный обход стека для кадров CLR без необходимости присутствия clrcomposition.dll.

Случайные улучшения

  • Улучшена поддержка отладки ядра Linux (особенно для ядер 6.11+ )
  • Поддержка сжатых страниц KDUMP ZSTD

Исправления ошибок

  • Обновите SOS до версии 9.0.557512.
  • Исправлена регрессия производительности при проверке отзыва подписей при загрузке msdia140.dll.
  • Исправлен сбой при чтении контекста XSTATE.
  • Исправлено выделение отключенной точки останова в окне дизассемблирования для различия с включенной точкой останова.
  • Исправлен сбой при закрытии плавающего окна инструмента
  • Исправлена проблема, из-за которой иногда текущая позиция окна временных шкал не заполнялась после открытия недавнего слежения.
  • Исправлена проблема, из-за которой окна дизассемблера и памяти иногда не обновлялись после ввода нового значения.
  • Исправлена цветовая схема строки заголовка в темной теме.
  • Исправлена презентация отложенных точек останова в окне точек останова, где расположение будет отображаться 0x0 вместо исходного выражения, введенного при создании. Кроме того, он имеет отдельный значок, указывающий, что он не привязан.
  • Исправлена проблема в locals/Watch, когда щелкнуть правой кнопкой мыши видимый элемент приведет к прокрутке представления вверх.
  • Исправлены проблемы с natvis, см. исходный отчет об ошибках.
  • Исправлен спам отладчика kd с сообщением Error getting port connector information, см. исходный отчет об ошибке.
  • Исправлена проблема с gc, которая автоматически инициировала условные точки останова, если условие было ложным.
  • Регистры YMM и ZMM теперь можно просматривать при отладке трассировки TTD.

Исправления доступности

  • Улучшенная навигация по клавиатуре для локальных, контрольных точек и окон точек останова.
  • Улучшена удобочитаемость окон ленты, локальных параметров, контрольных точек и точек останова.
  • Улучшенная удобство использования средства чтения с экрана в окнах "Локальные", "Контрольные точки" и "Точки останова"
  • При редактировании элементов в секциях "Локальные", "Просмотр" и "Точки останова" будут, по возможности, поддерживаться предыдущие фокус клавиатуры, выбор и прокрутка.
  • Улучшена общая поддержка масштабирования текста Windows

Общие улучшения пользовательского интерфейса

  • Добавлена команда для перемещения фокуса между текстовым полем ввода команд в область вывода команд в качестве режима переключения метки (например, командной строки). Ярлык Ctrl + M
  • Добавлен элемент контекстного меню «Перейти к дизассемблированию» в окно точек прерывания.
  • Добавлено контекстное меню в окно дизассемблирования для перехода к инструкции, установки указателя инструкции, перехода к источнику, включения/отключения точки останова, переключения состояния точки останова.

Отладка временных путешествий (TTD)

1.2410.11001.0

Изменение, нарушающее совместимость

  • dbghelp.dll динамически связывается с msdia140.dll. Это должно влиять только на средства, распространяющие dbghelp.dll, не включая msdia140.dll. Обратите внимание, что msdia140.dll входит в пакеты nuget, которые включают dbghelp.dll.

Исправления ошибок

  • Исправлена проблема, из-за которой псевдонимы функции коллекции расширений не были привязаны к триггерам загрузки
  • Не делайте хранилище символов неактивным при получении ошибки ERROR_INTERNET_SECURITY_CHANNEL
  • Исправлена проблема, из-за которой обратная косая черта не могла быть введена в командном окне для макетов клавиатуры, отличных от английского языка.
  • Исправлена проблема, из-за которой текстовое поле редактирования в точках останова, локальных и контрольных окнах не прокручивается до курсора, если текст больше, чем размещенный в нем столбец.
  • Для дампов CAB или ZIP приоритеты *.dmp (один период) по сравнению с *.*.dmp (двойные периоды)

Исправления доступности

  • Изменение размера столбцов с помощью клавиатуры было исправлено для окон "Контрольные" или "Локальные".
  • Улучшенная навигация по клавиатуре в WinDbgX.

1.2409.17001.0

Исправления специальных возможностей

Мы исправили несколько проблем при взаимодействии с WinDbg с помощью средства чтения с экрана.

Исправления ошибок

  • Исправлена проблема, из-за которой удаление WinDbgX не позволяет запускать классическую версию WinDbg.
  • Исправлена проблема, из-за которой WinDbgX изменит размер после появления во время запуска.

Отладка временных путешествий (TTD)

  • Обновлено до версии 1.11.429.
  • Дополнительные сведения см . в заметках о выпуске TTD.

1.2407.24003.0

Новые возможности

Новый поставщик скриптов JavaScript

Теперь мы предоставляем новый поставщик JavaScript с обратной совместимостью на основе V8. В результате этого узлы Arm64 теперь могут использовать расширения JavaScript. Пользовательский интерфейс arm64 теперь по умолчанию используется для ядра arm64.

Новый поставщик включен по умолчанию для всех архитектур. В x86 и x64 его можно включить или отключить с помощью .veighton команд и .veightoff команд. В будущем эти команды и устаревший поставщик JavaScript будут удалены.

Расширения отладчика с манифестами коллекции расширений теперь могут добавлять значки на вкладку "Расширения" ленты WinDbg. Щелкнув эти значки, будет запускаться визуализация заданного запроса модели данных. Это означает расширяемость осуществляется путем добавления представлений в манифест коллекции расширений. Представление привязывает связывание имени и значка с запросом модели данных и типом представления. Документацию по манифесту коллекции расширений см. в документации по манифесту коллекции расширений

Теперь расширение коллекции можно условно загрузить на основе определенных значений параметров исключения. Дополнительные сведения см . в документации по манифесту коллекции расширений.

Параметр конфигурации для никогда не скачивать определенные символы

Теперь можно пропустить скачивание символов для указанных изображений.

Symbols В разделе DbgX.xml файла конфигурации можно добавить список символов:

<Namespace Name="DisabledSymbolsDownload">
  <Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>

В отладчике можно запустить dx Debugger.Settings.Symbols.DisabledSymbolsDownload , чтобы просмотреть текущий список символов, которые не загружаются.

Вы также можете изменить список непосредственно из отладчика следующим образом:

dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()

Чтобы помочь в отладке проблем с загрузкой источников на основе внедренного SourceLink, теперь можно использовать команду !lmsourcesinfo module для отображения содержимого SourceLink, которое будет использовать отладчик.

Общие улучшения пользовательского интерфейса

Мы сделали некоторые небольшие улучшения в окнах, таких как окно модулей или окно стека:

  • Теперь можно сортировать представления сетки, щелкнув столбец заголовка.
  • Доступны дополнительные действия правой кнопкой мыши.
  • В окне стека отображаются кадры, которые встраиваются при необходимости.

Исправления ошибок

  • Исправлена проблема, из-за которой файлы PDB размером более 4 ГБ не загружались по протоколу HTTP.
    • Edge является примером такого PDB.
  • Исправлена проблема кэширования в поставщике учетных данных отладчика (теперь она будет кэшировать учетные данные на сайте).
  • Исправлены ошибки при оценке триггеров загрузки коллекции расширений.
  • Исправлена ошибка, из-за !address которой может произойти сбой.
  • !heap -a -a должен работать сейчас.

TTD

См . заметки о выпуске TTD версии 1.11.410.

1.2402.24001.0

Новые возможности

Отладка Live Linux

Теперь вы можете выполнять прямую отладку процесса Linux. Дополнительные сведения см. в следующих статьях:

Отладка удаленного процесса Linux

Символы и источники Linux

Клиент WinDbg в обозримом будущем по-прежнему потребует Windows, так как WinDbg не работает в Linux.

Запись подмножества выполнения с помощью отладки времени перемещения

Теперь можно указать список модулей для записи, чтобы сосредоточиться на TTD на модулях, которые вам нужны. Это может значительно снизить затраты на запись. Чтобы использовать этот простой флажок "Запись подмножества выполнения" в диалоговом окне "Настройка и запись", а затем укажите модули, которые требуется записать. (см . известные проблемы ниже).

Для более точного управления можно точно записать программу с помощью нового API записи в процессе. Узнайте, как с помощью примера кода и документации.

Окно компактных регистров

Новое окно регистрации выглядит так же, как выходные данные команды r . Обратите внимание, что редактирование из нового окна регистрации еще не поддерживается.

Новые параметры для e (ввод значений) в команды памяти

Команды e (ввод значений) в память теперь поддерживают физические адреса так же, как d команды (отображаемая память). Обратите внимание, что эти параметры поддерживаются только в режиме ядра:

Вариант Описание
/p Использует адреса физической памяти для отображения. Диапазон, указанный диапазоном, будет взят из физической памяти, а не виртуальной памяти.
/p[c] Аналогично тому, что /pкэшированная память будет считываться. Квадратные скобки вокруг c должны быть включены.
/p[uc] То же самое /p, что, за исключением того, что некэшированная память будет считываться. Квадратные скобки вокруг uc должны быть включены.
/p[wc] Так же, как /pи в случае с памятью, объединенной записью, будет считываться. Квадратные скобки вокруг wc должны быть включены.

Дополнительные сведения см. в разделе e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (ВВОД значений).

Исправления ошибок

  • Поддержка дедемангинга имени Rust в отладке Linux
  • Улучшения отладки СРЕДЫ CLR
    • Добавление возможности принудительной принудительной передачи кадров среды CLR в смешанном режиме
      • Добавлен параметр ForceMixedModeStackWalker , добавленный config.xml или DbgX.xml.
      • Добавлена !forceclrmixedmodeunwind команда для одноуровневых расследований или если вы не можете изменить параметр конфигурации.
  • Общие улучшения отладки СРЕДЫ CLR в Linux
  • Устранение ряда проблем, связанных с LinuxKernel.js и переменными на ЦП
    • Добавлена !runq команда для LinuxKernel.js, чтобы иметь возможность дампа очередей запуска планировщика ядра на ЦП (аналогичной команде служебной программы аварийного runq завершения Linux).
    • Исправлены различные команды в LinuxKernel.js для соответствия изменениям ядра: в более поздних ядрах дерево таймера использует кэшированные узлы RB вместо необработанных узлов RB; в более поздних ядрах список all_bdevs исчез, поэтому блоковые устройства теперь переходят из суперблока (blockdev_superblock)
  • Различные исправления natvis для работы более поздних версий Visual Studio
  • Предпочитать sourcelink и устаревшую sourceinfo
    • Добавлена !lmsourcesinfo <module> команда для отображения потоков исходной связи из PDB (чтобы помочь в отладке проблем с sourcelink).

Известные проблемы

При указании списка модулей для записи с помощью TTD указание нескольких модулей не работает в этом выпуске.

1.2308.2002.0

Многие исправления ошибок и небольшие улучшения.

1.2306.12001.0

Многие исправления ошибок и небольшие улучшения.

1.2303.30001.0

Примечание.

Отладчик был переименован из WinDbg Preview в WinDbg.

Устаревший отладчик, выпущенный с помощью средств отладки для Windows, будет ссылаться как WinDbg (классическая версия).

Отладка временных путешествий в ARM64

Кроме того, WinDbg выполняется изначально в ARM64, мы также включили отладку времени (TTD) собственных процессов ARM64. Теперь вы можете записывать собственные процессы ARM64 (и процессы x86 и ARM32) и выполнять их отладку даже на компьютере x64. Поддержка процессов с поддержкой x64 или x64 (ARM64EC) на устройствах ARM64 пока недоступна.

Общая производительность TTD также была улучшена, при этом затраты на запись значительно сократились для процессов, использующих общие инструкции SIMD. В общей сложности были оптимизированы 65 новых инструкций, начиная от MMX до SSE 4.2, AVX и AVX2.

Неоднозначное разрешение точки останова

Неоднозначные точки останова позволяют отладчику задавать точки останова в определенных сценариях, когда выражение точки останова разрешается в несколько расположений. Дополнительные сведения см. в разделе "Неоднозначное разрешение точек останова".

1.2107.13001.0

Поиск WinDbg Preview теперь включает возможность поиска с помощью регулярных выражений — Regex. Включите regex в окне поиска, выполнив клавиши CTRL+F, а затем переключите кнопку, помеченную .* рядом с полем поиска.

Ограниченный режим

Режим ограниченного доступа — это необязательный параметр, который может ограничить тип сеансов отладки WinDbg Preview, может запускаться только к удаленным сеансам отладки и файлам дампа. Дополнительные сведения см. в статье WinDbg — ограниченный режим.

Поддержка теневой переменной

В предыдущих версиях WinDbg вызывает ошибки "Неоднозначный символ" при попытке оценить (?)) или отобразить переменную (dx), которая делится своим именем с другой переменной в области. Windbg теперь будет диамбигуировать переменные, которые имеют то же имя, добавляя @n к имени переменной. Например: foo, foo@0@1

Это изменение также будет отражено в окне "Локальные". Ранее отображается только ближайшая переменная в области.

1.2104.13002.0

Удобная функция повышения производительности WinDbg Preview — это возможность обнаруживать шаблоны в командном окне. Для этого выделите любой текст и все остальные экземпляры этого текста. Так как это выделение полезно при просмотре шаблонов памяти, теперь оно также будет выделять эквивалентные числа в других радиксах, независимо от формата числа в шестнадцатеричном, десятичном или научном нотации. Дополнительные сведения о схемах нумерирования см. в разделе n (Set Number Base).

Пример:

При выборе 0x000001e2fb3f6160все остальные экземпляры выделяются независимо от формата.

Screenshot of WinDbg command window with multiple number formats highlighted.Снимок экрана: командное окно WinDbg с выделенным несколькими форматами чисел.

Эта функция также работает с полувременного выделения. Ctrl+ Double Click on a number, чтобы выделить все его экземпляры. Вы можете отслеживать несколько важных чисел в журнале команд таким образом (чтобы очистить выделение, ctrl+ Double Click on the number again). Наконец, эта функция также работает при поиске чисел с помощью CTRL+F.

Расширенный доступ к исходному коду

Команда исходного пути .srcpath, Lsrcpath (Set Source Path) была обновлена, чтобы включить новый тег — DebugInfoD. Дополнительные сведения см. в статье "Расширенный доступ к исходному коду".

Состояния узлов и гостевых процессов WOW в модели данных

При отладке 32-разрядного процесса WOW из 64-разрядного контекста пользователи теперь могут получить доступ к состояниям узла и гостя в модели данных.

32-разрядные примеры состояния гостевого состояния:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

64-разрядные примеры состояния узла:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Улучшения отладки JavaScript

JavaScript, загруженный в пользовательский интерфейс, теперь можно напрямую отлаживать в консоли с помощью команды scriptdebug. Дополнительные сведения см. в статье "Скрипты отладчика JavaScript" — отладка JavaScript.

Улучшения в специальных возможностях

С помощью Предварительной версии WinDbg мы стремимся создать отладчик, включающий инженеров с ограниченными возможностями, мы постоянно совершенствуем специальные возможности. Были сделаны следующие улучшения.

  • Ссылки на командное окно теперь можно щелкнуть с помощью клавиатуры (SHIFT+ВВОД)
  • Улучшенная навигация по клавиатуре главного меню
  • Улучшенная навигация по клавиатуре ленты
  • Повышенная контрастность элементов пользовательского интерфейса

Новый тип доступа к данным Overwrite для отладчика временных путешествий

Отладчик по времени (TTD) теперь предоставляет тип доступа к данным Overwrite. Запросы памяти, такие как dx @$cursession.TTD.Memory() теперь, имеют дополнительный столбец со старыми значениями записей.

Другие исправления, улучшения и обновления

  • Добавлена функция для автоматического обнаружения и применения обходного решения для аппаратного решения USB 3.1, когда узел отладки ядра и целевой объект являются контроллерами USB 3.1.
  • Добавлено новое сочетание клавиш для пользовательского интерфейса: Ctrl+Shift+щелчок по ссылке DML скопирует её в буфер обмена.

1.0.2007.01003

Закладки временной шкалы

Закладка важных позиций поездок по времени в WinDbg вместо ручного копирования позиции в блокнот. Закладки упрощают просмотр разных позиций трассировки относительно других событий и их анимацию.

Вы можете указать описательное имя для закладок.

Screenshot of new bookmark dialog with example name for first API call in Display Greeting app.Снимок экрана: диалоговое окно создания закладки с примером имени первого вызова API в приложении "Приветствие".

Доступ к закладкам через окно временной шкалы, доступное в режиме просмотра > временной шкалы. При наведении указателя мыши на закладку будет отображаться имя закладки.

Screenshot of WinDbg timeline with three bookmarks and a tooltip displaying bookmark name.Снимок экрана: временная шкала WinDbg с тремя закладками и подсказкой с именем закладки.

Вы можете выбрать и сохранить закладку (или щелкнуть правой кнопкой мыши), чтобы перейти к этой позиции, переименовать или удалить закладку.

Screenshot of bookmark right-click popup menu with options to travel to position, edit, and remove.Снимок экрана: всплывающее меню закладки правой кнопкой мыши с параметрами перемещения по расположению, редактированию и удалению.

Окно модулей

В новом окне отображаются модули и связанные с ними сведения, доступные на ленте "Вид". В нем отображается следующее:

  • Имя модуля, включая расположение пути
  • Размер в байтах загруженного модуля
  • Базовый адрес, по которому загружается модуль
  • Версия файла

Screenshot of WinDbg Modules view window displaying five listed modules.Снимок экрана: окно представления модулей WinDbg с пятью перечисленными модулями.

Имена и описания потоков, доступные в динамической отладке

Имена потоков, заданные из SetThreadDescription, теперь доступны при отладке в реальном режиме пользователя. Имена потоков доступны с помощью команды "~" или модели данных отладчика.

0:000> ~
   0  Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
   7  Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
   8  Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
   9  Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen

0:000> dx @$curthread
@$curthread                 : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e)  [Switch To]
    Id               : 0x5ffc
    Name             : Hello world!
    Stack
    Registers
    Environment

Поддержка переносимого PDB

Добавлена поддержка переносимых PDB. В формате переносимой PDB (база данных программы) описывается кодировка отладчика информации, созданной компиляторами языков общей инфраструктуры языка (CLI) и используемыми отладчиками и другими средствами. Дополнительные сведения см. в статье "Переносимые символы PDB".

Другие изменения и исправления ошибок

  • WinDbg теперь поддерживает отладку дампа ядра AMD64 и Linux.
  • Улучшения записи времени и другие исправления.

1.0.1912.11001

Временная шкала TTD — мы добавили новое окно, отображающее визуальное представление важных событий в трассировке: исключения, точки останова, вызовы функций и доступ к памяти. Временные шкалы автоматически открываются и отображаются исключения (при наличии) и точек останова. Дополнительные сведения см. в разделе "Предварительная версия WinDbg — временная шкала".

Переключился на хром окна по умолчанию — пользовательский хром окна, который мы использовали, в то время как более красивый, вызывал некоторые проблемы масштабирования и изменения размера для заметного количества людей, поэтому мы решили удалить его на время.

Меню файлов улучшена навигация по клавиатуре. Меню файлов теперь гораздо проще перемещаться с помощью клавиатуры.

Другие изменения и исправления ошибок

  • Теперь окно стека и окно локальных переменных будет отключено при запуске целевого объекта и не будет отображать сообщение "Неопределенная ошибка" при отсутствии целевого объекта.
  • Добавлен столбец "Службы" в диалоговое окно присоединения, чтобы легко найти, какие службы выполняются.
  • Исправлена ошибка, из-за которой обнаружение архитектуры не работало при запуске приложений с аргументами.
  • Окно дизассемблирования улучшило дизассембли при загрузке частных символов.
  • jsprovider.dll теперь загружается автоматически, поэтому мы удалили кнопку Load JSProvider на ленте скрипта.

1.0.1908.30002

Улучшения для объектов - вызовов TTD Теперь включают имена параметров, типы и значения. При запросе между трассировками для вызовов функций можно получить полностью типизированные параметры и их значения, что упрощает фильтрацию результатов по параметрам.

Поддержка Open Enclave — Предварительная версия WinDbg теперь может выполнять отладку приложений Open Enclave (OE) для получения дополнительных сведений, см. в разделе "Отладка Open Enclave".

Дампы ELF Core - В рамках поддержки Open Enclave, WinDbg может открывать дампы ядра ELF и двоичные файлы, а также символы DWARF (DWARF 5 в настоящее время не поддерживаются) как из анклавов, так и приложений Linux. При открытии основного дампа из приложения, отличного от Windows, базовые окна и команды должны работать правильно, но большинство расширений и команд, относящихся к Windows, не будут работать. ФАЙЛЫ ELF и DWARF будут загружены с серверов символов после ключевых соглашений, определенных здесь. Анклава являются единственным поддерживаемым сценарием, но мы открыты для отзывов о открытии других дампов ядра Linux.

Изменение формата файла TTD . Мы внесли основное обновление в формат файла для трассировок TTD, которые прерывают совместимость вперед. Предыдущие версии WinDbg Preview не смогут открывать трассировки, записанные с помощью этих (и будущих) версий WinDbg Preview, но эти (и будущие) версии смогут открывать как новые, так и старые трассировки.

Другие изменения

  • Теперь TTD будет использовать 64-разрядный модуль для индексирования и соответствующей биты обработчика отладчика для воспроизведения, чтобы свести к минимуму потенциальные проблемы с памятью при индексировании и проблемах SOS при повторе.
  • При запуске "dx" без параметров теперь отображается корневое пространство имен для упрощения просмотра.
  • Теперь можно изменить расположение символа по умолчанию и исходного кэша с помощью меню параметров.
  • Улучшенная поддержка записи AVX-512 (запись AVX-512 приведет к большему, чем обычное замедление).
  • Мы включили автономное лицензирование.

1.0.1905.12001

Улучшения устранения ошибок SymSetDiaSession . Исправление в прошлом месяце, чтобы устранить ошибку, вызванную приложениями, внедряющими DbgHelp в наш процесс, по-прежнему не работает в некоторых сценариях. Мы улучшили эту ошибку и продолжаем отслеживать отзывы об этой ошибке.

Настройка цвета акцента — для многих сценариев требуется несколько экземпляров OpenDbg, а перемещение между ними может быть запутанным и занять некоторое время, чтобы выяснить, какой из них является "правильным". Мы добавили возможность изменить цвет синего акцента, чтобы помочь визуально различать сеансы и сделать переключение между ними проще.

Просто выберите ленту "Вид" и выберите параметр цвета акцента в последнем разделе. При запуске будущих сеансов из последних целевых объектов цвет акцента будет сохранен в рамках рабочей области целевого объекта.

Улучшения исходной маркеризации. Теперь в окне источника есть базовая поддержка маркеризации исходных файлов Rust и C++ SEH __try/__except/__finally/__leave.

Улучшения корутин — улучшена поддержка локальных переменных соутина и некоторых оптимизированных переменных.

Параметр символа и кэша источника по умолчанию— добавлен параметр в меню параметров отладки, чтобы изменить расположение кэша для символов. Примечание. Существует известная проблема, из-за которую это пустое приведет к сбою загрузки источника. Мы добавим проверку, чтобы предотвратить это в будущем выпуске.

-pv исправления — исправлена ошибка, которая может препятствовать -pv (неинвазивное подключение) работать в некоторых обстоятельствах.

1.0.1904.18001

Исправление ошибки SymSetDiaSession. У нас были отчеты за некоторое время ошибки, которая предотвращает запуск WinDbg Preview в некоторых ситуациях. Существует несколько внешних приложений, которые пытаются внедрить версию DbgHelp в наш процесс перед загрузкой. Некоторые из них используют версию DbgHelp с отсутствующими функциями, что приводит к этой ошибке при попытке использовать эти функции. Мы добавили исправление для этого и будет отслеживаться, если существуют все еще сценарии, в которых она происходит.

Элемент управления шрифтом — мы добавили параметры для управления размером шрифта и шрифта. Существует два разных параметра, один для текстовых окон (монопространствовые окна, такие как дизассембли, источник, команда и т. д.) и один для окон инструментов (локальные, стек и т. д.). Есть еще несколько областей, которые не влияют на эти варианты, которые мы будем обновлять в будущем.

Улучшение выделения. Постоянное выделение текста в командном окне теперь также будет выделять текст в окнах источника и заметок.

Улучшения загрузки источника. Мы изменили способ загрузки исходных файлов. Ранее при открытии исходного файла операции обработчика, такие как выполнение дополнительных команд, не были возможными или непредсказуемы. Мы изменили место загрузки, чтобы повысить параллелизм и более надежную отмену операций открытия источника.

Другие изменения и исправления ошибок:

  • Добавлено значение "Перейти к дизассембли" в контекстное меню исходного окна.
  • Добавлен флажок "Следовать текущей инструкции" в окне дизассембли.
  • Исправлена ошибка, из-за которой окно командной строки выполнялось медленно при выводе большого количества текста.
  • Изменены ключи вверх и вниз страницы, чтобы выполнить аналогичные действия Visual Studio.
  • При открытии ФАЙЛА ASM в исходном окне теперь будет выделен базовый комментарий, строка и выделение директив

1.0.1812.12001

Эта версия включает эти обновления.

Заголовок модели данных C++ отладчика — новый заголовок C++ DbgModel.h включен в Windows SDK для расширения модели данных отладчика через C++. Дополнительные сведения см. в обзоре модели данных C++ отладчика. В этом выпуске содержится новое расширение, которое добавляет дополнительные функции стиля API в модель данных отладчика, доступ к которой можно получить с помощью команды DX, JavaScript и нового заголовка DbgModel.h. Это расширение позволяет модели данных включать в себя знания о выполнении сборки и кода через пространство имен Debugger.Utility.Code и локальную файловую систему через пространство имен Debugger.Utility.FileSystem.

Расширение искусственных типов с помощью этого нового расширения API у нас есть новый пример на нашем репозитории GitHub здесь - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Это расширение JavaScript считывает базовые файлы заголовков C и определяет сведения о искусственном типе для структур и союзов, определенных в заголовке. С помощью команды DX память можно просмотреть структурированным образом, как если бы у вас была PDB с сведениями о типе для этих типов.

Другие изменения и исправления ошибок:

  • Предварительная версия WinDbg теперь будет более интеллектуально обрабатывать исходные окна или дизассемблированное окно на переднем плане при пошаговом выполнении.
  • Повторно упорядоченное заголовок окна WinDbg Preview, чтобы иметь более важную информацию при отладке ядра.
  • Контрастность фона в командном окне должна быть немного заметной.

1.0.1810.2001

Эта версия включает эти обновления.

  • Диалоговое окно "Новые параметры", доступ к которому осуществляется из меню "Файл" или ленты "Главная".
  • Диалоговое окно параметров событий и исключений. Это меню изменяет способ обработки событий и исключений отладчика, эквивалента команд sx или диалоговых фильтров событий WinDbg. Выберите параметры на домашней ленте, а затем нажмите кнопку "События и исключения" слева, чтобы управлять ими.
  • Улучшен индексатор TTD с более высокой производительностью. Это повышает производительность индексирования файлов трассировки TTD, что делает процесс индексирования гораздо быстрее (от 2x до 10x) при увеличении размера файлов индексов (~50 % меньше). Улучшения perf наиболее заметны для трассировки более 4 ГБ размера или при использовании компьютера со многими ядрами ЦП (8+). Новый индексатор делает его более возможным для отладки очень больших трассировок (50 ГБ+).
  • Новый флаг запуска debugArch для указания архитектуры. Предварительная версия WinDbg пытается запустить подсистему отладчика с правильной битностью в целевой объект, чтобы лучше поддерживать отладку управляемого кода. Существуют обстоятельства, когда он не может определить правильную биту или вы можете переопределить то, что он решает. Используйте -debugArch x86|amd64 для управления архитектурой обработчика отладчика.

Другие изменения и исправления ошибок:

  • Исправлена ошибка, из-за которой черные полосы отображались на полноэкранном отладчике с открытым окном с плавающей запятой.
  • Исправлена ошибка, из-за которой параметры символов непреднамеренно очищались.
  • Журнал команд теперь сохраняется при запуске из последних целевых объектов.
  • В окне модели данных теперь можно изменять значения.
  • Неиндексированные трассировки TTD теперь будут более ясными, что они не индексированы.
  • Улучшенная производительность окна локальных параметров
  • Добавлена кнопка ленты для сохранения журналов командного окна в файл.
  • Добавили. SelectMany(<проекция>) для набора методов LINQ по умолчанию.

1.0.1807.11002

Эта версия включает эти обновления.

Автоматическое сохранение и загрузка точек останова. Это первый шаг для замены рабочих областей. Мы начинаем этот маршрут, включив сохранение и загрузку точек останова. Запуск того, что вы отладили ранее на вкладке "Последние" в меню файлов, теперь загрузит точки останова из этого сеанса. План состоит в том, чтобы расширить эту функцию, чтобы сохранить дополнительные сведения в сеансах. Аппаратные точки прерывания (ba) и другие различные свойства точек прерывания, такие как контексты, специфичные для потоков и процессов, а также условия, в настоящее время не сохраняются.

Незначительные изменения и исправления ошибок:

  • Добавлены параметры командной строки -x, -xe, -xd, -xn и -xi для управления обработкой исключений и событий. Эти параметры командной строки ведут себя так же, как и их счетчики команд.
  • Окно заметок теперь поддерживает полужирное, подчеркивание и курсив форматирования.
  • Исправлены некоторые проблемы с увеличением и прокруткой.
  • При выборе текста в окнах команды, памяти, источников или дизассембли теперь отображается светлое выделение над другими экземплярами выделенного текста.
  • Исправлена ошибка, из-за которой прерывание загрузки символов приводило к сбою загрузки символов для остальной части сеанса.
  • Теперь NatVis перезагрузит правильно при перезапуске сеанса.

1.0.1805.17002

Эта версия включает эти обновления.

Новое окно дизассемблирования — теперь включается окно дизассембли:

  • Прокрутка вверх или вниз будет непрерывно загружать больше дизассембли по возможности.
  • Выделение синтаксиса для чисел, адресов кода и опкодов.
  • При выборе символа кода откроется окно дизассемблирования в это расположение.
  • При наведении указателя мыши на числа отображаются подсказки, преобразующие это число в другие базы.
  • Заголовки, обозначающие начало функции.

Быстрое исходное окно — исходное окно было обновлено, чтобы быть быстрее и эффективнее ресурсов.

Незначительные изменения и исправления ошибок:

  • Исправлены проблемы с кэшированием символов
  • Исправлены некоторые случаи, когда переключение начального разрыва не было пригодным для использования, если целевой объект не сломался в
  • Если вы нажимаете вкладку в командном окне без возможности, курсор будет оставаться в поле ввода
  • Предварительная версия WinDbg теперь автоматически обнаруживает бит при открытии CAB-файлов

1.0.1804.18003

Эта версия включает эти обновления.

Улучшения индикации состояния символов и их отмены - Иногда отладчик отображает BUSY при загрузке символов, и трудно определить, что он делает и почему, если не включена команда !sym noisy. Мы обновили Предварительную версию WinDbg, чтобы получить более эффективное взаимодействие с тем, что он делает при загрузке символов, чтобы помочь устранить любые проблемы. Помимо простого просмотра того, что происходит, мы внесли некоторые изменения, которые должны сделать отмену символов более надежными, и окно журналов будет содержать некоторые из сведений, которые обычно выводятся при включении !sym шумно. Если вы попали в представление —> журналы вы получите полный шумный символ загрузки выходных данных без необходимости включить его и попытаться перезагрузить символы.

Окно экспериментальных заметок — предварительная версия WinDbg теперь имеет окно для создания заметок. Просто нажмите "Вид" —> "Заметки", чтобы открыть его. Если вы копируете и вставляете его, ссылки DML будут сохранены и по-прежнему работают, как если бы это было командное окно. Вы также можете сохранять и загружать файлы заметок на ленте "Заметки" при открытии окна.

Экспериментальное более производительное окно исходного кода - Чтобы повысить производительность WinDbg Preview, разработано новое экспериментальное окно исходного кода, и оно довольно эффективно. Есть еще несколько пробелов вокруг контекстных меню и выделения синтаксиса, но мы хотим дать всем возможность попробовать его, прежде чем он завершится, чтобы дать нам ранние отзывы. Запустите $UseFastSourceWindow, чтобы использовать его. Если вы хотите вернуться к старому, запустите $UseMonacoSourceWindow. Настройки будут сохранены для последующих сеансов, Вам необходимо закрыть и заново открыть исходные окна, чтобы получить новую версию.

API JSProvider версии 1.2 — для расширений JavaScript, которые объявляют поддержку API версии 1.2:

  • Любой объект с методом .compareTo, который завершает скрипт, будет иметь настраиваемый компратор для него (операторы сравнения будут работать в средство оценки DX и в других местах: например: IModelObject::Compare)
  • Любой объект с методом .equals, который завершает скрипт, будет иметь в нем настраиваемый оператор равенства (== и != будет работать в средство оценки DX и в другом месте: например: IModelObject::IsEqualTo)
  • Объекты собственной или модели данных, вводимые в скрипт, будут иметь .compareTo и .equals на них, которые позволяют получить доступ к любому пользовательскому компратору или пользовательским реализациям равенства.

Незначительные изменения и исправления ошибок:

  • Теперь .server перечисляет полное доменное имя для упрощения использования при возникновении проблем с доменом вокруг коротких имен.
  • Ctrl+G теперь работает в исходном окне.
  • Добавлена адресная строка в окно дизассемблирования.
  • Предварительная версия WinDbg теперь будет обрабатывать _NT_SYMBOL_PATH более ожидаемым образом.
  • Добавлен параметр командной строки -server.
  • Запросы модели данных TTD теперь можно отображать постепенно, поэтому если вы прерываете его, вы по-прежнему увидите некоторые результаты. Эта функция по-прежнему является экспериментальной и необязательной. Запустите dx @$cursession.TTD.AsyncQueryEnabled = 1 , чтобы включить его.
  • Команда dps теперь содержит ссылки на исходные файлы, к ним относятся.

1.1801.19001.0

Эта версия включает эти обновления.

Выделение текста — теперь можно выделить все экземпляры выделенного текста непосредственно в отладчике. Чтобы использовать эту функцию, просто выделите текст в командном окне, а затем выберите "Выделить" на ленте команды или нажмите клавиши CTRL+ALT+H. При использовании одного из тех, кто уже выделен, текст удаляет выделение.

Если вы предпочитаете использовать команды, можно использовать команду "$hl":

$hl ["someValueHere"] — выделение текста (или отмена выделения, если уже выделено)

$hl clearAll — очистка всех выделенных записей

$hl caseSensitive [1|0] — установка сопоставления выделения для конфиденциального регистра или не учитывает регистр (по умолчанию не учитывается регистр)

В этом выпуске также содержатся некоторые незначительные исправления ошибок.

1.1712.15003.0

Эта версия включает эти обновления.

Запросы памяти TTD . Теперь вы можете запрашивать TTD для доступа к памяти аналогично тому, как вы запрашиваете вызовы сегодня. Это позволяет находить все операции чтения, записи и выполнения, которые получают доступ к определенному диапазону памяти.

Пример чтения и записи: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

Уникальный пример выполнения: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Изменения параметров. Предварительная версия WinDbg теперь автоматически сохраняет параметры между сеансами, включая путь к символам и путь к источнику.

Улучшения JavaScript

  • 64-разрядные числа и числовые числа в JavaScript теперь содержат метод modulo, позволяющий выполнять операцию с модулем true 64-разрядной версии.
  • Объекты, определенные в JavaScript, теперь могут реализовать пользовательское сравнимое или удваиваемое понятие, которое будет работать в dx с помощью стандартных операторов C++ или в операциях LINQ. Чтобы использовать это, скрипт должен объявить в массиве initializeScript, который поддерживает новую версию API узла, вставив запись "new host.apiVersionSupport(1, 2)". После этого эти функции можно использовать в любом запросе LINQ окна модели данных или dx. Если метод реализует .compareTo(other), он сравним (операторы сравнения работают в dx и LINQ). Если метод возвращает отрицательное значение, например "это < другое". Если метод возвращает ноль, "this == other". Если метод возвращает положительное значение "это > другое". Если метод реализует .equals(other), он является эквавируемым (== работает в dx и LINQ). Метод должен возвращать значение true или false.

Незначительные изменения и исправления ошибок:

  • Исправлена ошибка, из-за которой окна стека и локальных параметров не работали во время отладки загрузки.
  • Обновление выходных данных LM для более точного отчета ProductVersion и аналогичных полей
  • Включена кнопка "Выйти назад" во время сеансов TTD
  • Добавлена поддержка -lsrcpath
  • Заголовки в локальных, контрольных и модельных окнах теперь не исчезают при прокрутке вниз
  • Когда ALT+Tabbing обратно в WinDbg Preview, в командном окне будет правильно сохранено расположение курсора
  • Добавлено сочетание клавиш CTRL+ALT+V для переключения подробного режима
  • Теперь можно отключить автоматическую прокрутку командного окна, выбрав и удерживая (или щелкнув правой кнопкой мыши) вкладку командного окна и выбрав "Отключить автоматическую прокрутку".
  • Теперь можно отлаживать дочерние процессы с помощью расширенной страницы запуска исполняемого файла.

1.0.14.0

Эта версия включает эти обновления.

Улучшенный интерфейс сервера обработки — новое уведомление в меню "Файл", чтобы показать, к чему подключен сервер обработки и с которым вы взаимодействуете, был добавлен. В рамках этих изменений при завершении сеанса отладки подключение сервера обработки будет сохраняться и может быть отключено в меню "Файл".

Новые предустановленные параметры макета на ленте "Вид" — на ленте "Вид" появился новый параметр "Макеты". В настоящее время существует три макета: значение по умолчанию, одно ориентировано на дизассембли и один минимальный.

Лента отладки 'Перемещение во времени' — есть расширенная лента 'Перемещение во времени', которая будет отображаться при отладке трассировки отладки перемещения во времени.

Метаданные из скриптов JavaScript— расширения JavaScript теперь могут возвращать метаданные для свойств и других конструкций. Это означает, что расширение может предоставлять строки справки, указывать радикс отображения значений и многое другое. Метаданные предоставляются путем размещения дескриптора метаданных в объекте с помощью функции Symbol.metadataDescriptor или явного вызова host.metadata.defineMetadata. Возвращаемые функции, итерированные значения и другие контексты значений могут возвращать метаданные для их значения через host.metadata.valueWithMetadata.

Обновления API JavaScript. Некоторые потенциально критические изменения на уровне источника были внесены в API в поставщике JavaScript (включая новые проецируемые методы и свойства в собственных объектах). Существующие расширения не увидят никаких потенциально разрушающих изменений, без указания поддержки новой версии API JsProvider. Поддержка новой версии API указывается путем размещения записи host.apiVersionSupport в массиве, возвращаемой инициализациейScript, с утверждением поддержки версии 1.1. может быть? .. со значением, указывающим поддержку версии 1.1.

Изменения в API версии 1.1 включают:

  • host.getModuleSymbol и host.getModuleType возвращают значение NULL, если они не могут найти символ вместо исключения.
  • Все собственные объекты имеют свойство адреса в дополнение к .targetLocation. Если у объекта нет адреса, при доступе к свойству возникнет исключение.
  • Все собственные объекты имеют новые методы .getObjectValue и .setObjectValue для доступа к свойствам объекта, который может конфликтовать с именами мест JavaScript на объекте (например, "адрес").

Дополнительные изменения JavaScript

  • Расширения JavaScript теперь могут добавлять и удалять свойства объектов модели данных с помощью Object.defineProperty и оператора удаления. Добавление или регистрация класса JavaScript в качестве родительской модели или сигнатуры типов по-прежнему является наиболее предпочтительным способом управления объектной моделью.
  • Расширения JavaScript теперь могут изменять глобальные переменные в модулях в целевом объекте отладки с помощью нового API host.setModuleSymbol.
  • Все математические функции, которые находятся на 64-разрядном типе библиотеки (например, .add, .subtract, .умножение, деление и т. д.) теперь присутствуют в числах JavaScript.
  • Функции и свойства JavaScript теперь могут возвращать значения, которые являются перечислениями с помощью пользовательского маршалинга. Функция или метод доступа к свойствам может возвращать host.typeSystem.marshalAs(value, type...) для создания такого пользовательского маршалинга.
  • Команда точки останова в отладчике скрипта теперь может прерывать имена функций в дополнение к позициям строки или столбца.
  • Объекты типа в расширениях JavaScript имеют доступ к их содержащим модулю через свойство .containingModule.

Незначительные изменения и исправления ошибок:

  • Исправлено форматирование вкладок условной ленты, которые будут менее запутанными.
  • Повторно работал DML, чтобы быть более строгим в синтаксическом анализе для повышения производительности.
  • Различные исправления с производительностью и поведением CTRL+F.
  • Добавлено предупреждение при выполнении без повышенных привилегий перед попыткой использовать TTD.
  • Добавлен параметр переопределения автоматического обнаружения битов целевого объекта.
  • Отключены различные параметры меню файлов и ленты, если они не могут использоваться (например, Go, когда в файле дампа).

Известные проблемы:

  • SOS не будет работать для x86-трассировок.

1.0.13.0

Эта версия добавляет трассировку путешествия по времени. Отладка перемещения по времени позволяет записывать процесс, а затем воспроизводить его позже как вперед, так и назад. Отладка временных путешествий (TTD) помогает упростить отладку проблем, позволяя "перемотка" сеанса отладчика вместо необходимости воспроизводить проблему, пока не найдете ошибку. Дополнительные сведения см. в статье "Отладка временных путешествий" — обзор.

1.0.12.0

Эта версия была первым выпуском WinDbg Preview. Общие сведения о функциях, доступных в WinDbg Preview, основных функциях WinDbg.

См. также

WinDbg — установка

WinDbg — параметры запуска командной строки