Бөлісу құралы:


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

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

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

Версия 1.2601.12001.0

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

  • Обновлено до .NET 10
  • Обновленное окно скрипта для использования последнего редактора Монако (0.55.1)
  • Добавлены кнопки "Отменить/Повторить" на вкладку ленты "Скрипт"
  • Улучшен фокус во время навигации по клавиатуре между окнами инструментов
  • Исправлены незначительные проблемы с прокруткой и выделением в окне Дизассембли
  • Исправлена проблема, из-за которой окно регистров показывало значения, отличающиеся от команды register.
  • Исправлено несколько проблем с высоким разрешением DPI
  • Проверьте возраст отладчика и сообщите предупреждение, если он "слишком старый".
  • Исправлен сбой, когда режим графа, выбранный в окне модели, открыт для пустого запроса
  • Реализованы журналы, устойчивые к сбоям для WinDbg

Улучшения подсистемы отладки

  • Улучшена производительность поиска имен символов, которые отсутствуют в системе (особенно для DWARF и других подключаемых модулей)
  • Добавлена проверка null для обработчиков OnTargetCompositionEvent
  • Включение чтения маски тегов указателя

Отладка с перемещением во времени (TTD)

  • TTD версии 1.11.567 -> 1.11.584
  • Несколько улучшений для повышения производительности и надежности индексирования, включая скорость 5x для больших трассировок (100+ ГБ).
  • Исправлена проблема, сообщаемая клиентом: доступ к TEB через регистр сегмента, используя 32-разрядные адреса, работает. (1.11.572)
  • Более точные стеки вызовов вокруг системных вызовов. (1.11.582)

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

  • Исправлены ошибки "информация о типе не найдена" из-за неправильной обработки сложных местоположений
  • Устранены проблемы с завершением строк в отладчике консоли для перенаправленного ввода-вывода и символами, не принадлежащими к Юникоду.
  • Исправлена фильтрация событий CPR/EPR в Linux
  • Исправлены отсутствующие метки функций в режиме дизассемблирования для Linux
  • Исправлено разрешение функций импорта в двоичных файлах Linux, скомпилированных с помощью CET
  • Исправлены неразрешенные точки останова, из-за которых динамические сеансы отладки Linux становятся неиспользуемыми после загрузки модуля
  • Исправлены переменные, локальные для потока, которые не отображаются в Linux при подключении через GDBServer
  • Исправлен сбой наложения страницы образа ELF, когда базовая служба памяти целевого объекта не реализует сведения о памяти
  • Исправлен сбой функций печати variadic в отладчике из-за неправильного использования параметров формата
  • Исправлена несогласованность в обработке типов данных long, unsigned long и wchar_t на различных версиях ОС UNIX (LLP64 и LP64)
  • Исправлена взаимоблокировка при ожидании потока очистки во время завершения работы отладчика

1.2511.21001.0

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

  • Улучшенный выбор файлов с обработкой на основе приоритетов в CAB-файлах и папках для точного нацеливания файлов дампа
  • Улучшена загрузка файлов символов ELF, DWARF и Mach-O с расширенными сообщениями журнала и статусными уведомлениями.
  • DBGHELP_DIA_PATH переменная среды теперь имеет приоритет над загруженными модулями для улучшения управления обработкой символов
  • Улучшение индексирования имен членов для более эффективной навигации и повышения производительности поиска символов

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

  • Устранена проблема, из-за которой попытки записи в память на активных целях Linux завершались сбоем.
  • Исправлены загрузка и функциональность расширений DAC и SOS при подключении к целям живой отладки.
  • Устранена проблема, из-за которой вложенные исполняемые файлы процесса отображались как imageXXXXXXXX, а не фактические имена
  • Исправлен код загрузки NuGet.exe, который перестал работать из-за реализации негативного кеша
  • Исправлены задержки пользовательского интерфейса при использовании exdigdbsrv
  • Обработка исключений WMI из средства проверки совместимости решений для USB 3.1
  • Удалены неправильные предупреждения (C6518) из заметок wdbgexts.h SAL
  • Исправлено отображение сведений о типах char16_t и char32_t на платформах Linux.

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

  • Добавить новый вариант упрощенной ленты, уменьшающий вертикальный размер ленты
  • Включение аппаратного ускорения графического оборудования при работе в сеансах протокола удаленного рабочего стола (RDP)
  • Улучшенная производительность обновления в окне Дизассембли
  • Исправлено масштабирование DPI для контекстных меню вспомогательного окна в разных конфигурациях мониторов
  • Сведения о версии, доступные для выбора на странице "О программе" для упрощения копирования
  • Удалена поддержка устаревшей технологии IDNA (международные доменные имена в приложениях)
  • Очистка журнала отладчика для исключения ранних записей запуска приложения из коллекции расширений и других внутренних операций

Отладка перемещения по времени (TTD)

  • 1.11.553 -> 1.11.567

1.2510.7001.0

Улучшения пользовательского интерфейса и взаимодействия

  • Открыть любой экземпляр окна памяти из ленты

Усовершенствования отладки и производительности

  • Предотвращение кражи обратных вызовов инструментирования процесса для повышения надежности отладки
  • Расширенный журнал переменных для отладки (TTD) с возможностью выбора табличного формата для лучшей визуализации данных
  • Исправлен сбой в журнале переменных при повторном использовании генераторов путем обеспечения правильного отслеживания функций
  • Улучшенный оценщик для неоднозначных точек останова для обработки более сложных сценариев отладки
  • Исправлено отображение пустого столбца Издатель для приложений магазина и процессов PLM

Обновления API воспроизведения и TTD

  • Обновленная команда !tt теперь предоставляет справку по одной строке и текущую позицию при вызове без аргументов, вместо того чтобы переходить к началу трассировки.
  • Добавлена экспериментальная доступность пакета SDK API воспроизведения для внешней интеграции
  • Расширенные методы модели данных журнала переменных для улучшения программного доступа
  • Исправлены различные оптимизации операций воспроизведения TTD и улучшения поддержки обратного вызова

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

  • Исправлено сообщение об ошибках, которое неправильно отображало сообщение об ошибке: операция успешно завершена.
  • Устранены проблемы с обработкой URL-адреса узла в командах Fasttfgitview
  • Улучшенный текст ошибки вокруг разрешения символов для предоставления более четкой обратной связи
  • Исправлены проблемы с загрузкой PDB для плоско отображаемых сборок .NET в Linux
  • Устранена ошибка чтения неинициализированных данных в компонентах отладки
  • Исправлены проблемы поиска файлов коллекции расширений с короткими именами файлов

1.2508.27001.0

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

  • Добавлен параметр отключения аппаратного ускорения графического оборудования для WinDbg.
  • Добавлено новое .AlternateFunctions свойство <frame>.Attributes.SourceInformation.

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

  • Исправлена проблема, из-за которой страница запуска отладки не обновлялась после открытия диалогового окна.
  • Исправлена проблема с элементами меню вкладок, которые подключались к устройствам, которые не были доступны для автоматизации пользовательского интерфейса.
  • Исправлена проблема, из-за которой незафиксированные входные данные команды были потеряны при изучении журнала команд.
  • Исправлена обработка колес мыши для правильной плавной прокрутки (мыши с гладкими колесами и трекпадами).
  • Исправлено вводящая в заблуждение рекурсивное поведение пошагового перехода в 32-разрядной отладке x86 при вызове __SEH_prolog4прологов функций.
  • Исправлена ошибка в параметрах настройки .AllowNugetExeUpdate галерей расширений, основанных на NuGet.
  • Исправлена ошибка при чтении символов DWARFv5, связанных с таблицами .debug_names и индексами имен.
  • Исправлено поведение шага для исходных строк с несколькими отфильтрованными шагами вызовов.
  • Исправлен сбой, вызванный недопустимой natvis строкой версии.
  • Исправлена передача CreateProcessW блокировки среды для удаленной отладки.
  • Исправлены команды !percpu и !allpercpu для указателей ЦПУ, которые динамически выделяются с помощью alloc_percpu в ядре Linux.
  • Исправлена проблема с нумерированием ЦП в сеансах отладки ядра Linux.
  • Исправлено отсутствие меток функций окна дизассемблера для целевых символов, не относящихся к программным базам данных (PDB).
  • Исправлена обработка перемещения заполнителей в двоичных файлах ELF.
  • Исправлено двойное освобождение в обработке символов DWARF DW_OP_fbreg.
  • Исправлена регрессия в коде сбора дампов, который препятствовал полной коллекции дампов памяти для эмулированных процессов x64-on-ARM64.

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

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

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, который не был открыт.
  • Заголовкам окон инструментов было присвоено то же контекстное меню, что и у закрепленной вкладки.
  • Внесли улучшения визуальных элементов в окна "Локальные", "Контрольные" и " Модели ".
  • Обновлено средство отладки Time Travel Debugging (TTD) до версии 1.11.532. Для получения дополнительной информации см. примечания к выпуску TTD.

1.2502.25002.0

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

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

Командная строка ввода автоматически отображает предлагаемые завершения, когда первый типизированный символ имеет значение . (точка), ! (bang) или $ (знак доллара).

Предложения также можно вызвать с помощью сочетания клавиш Ctrl+Пробел.

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

При локальной отладке динамических процессов WinDbg также может создавать моментальные снимки процесса. Чтобы переключаться между моментальными снимками и динамическим процессом, используйте значки на вкладке "Расширения ".

Аналогичным образом WinDbg может подключиться к моментальному снимку процесса, не приостанавливая его, с помощью строки протокола snapshot:pid=<process pid in hex> в Connect to remote debugger.

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

  • Debugger.Utility.Symbols.GetTypeInformation

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

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

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

  • Debugger.State.StepFilters

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

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

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

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

  • Улучшена поддержка отладки ядра Linux (особенно для ядер 6.11+ ).
  • Добавлена поддержка страниц KDUMP, сжатых с использованием формата ZSTD.

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

  • Обновлена операционная система сервера (SOS) до версии 9.0.557512.
  • Исправлена регрессия производительности при проверке отзыва подписей при загрузке msdia140.dll.
  • Исправлен сбой при чтении контекста XSTATE.
  • Исправлено выделение неактивной точки останова в окне Дизассембли, чтобы отличать её от активной точки останова.
  • Исправлен сбой при закрытии плавающего оконного инструмента.
  • Исправлена проблема, из-за которой текущее положение окна временной шкалы не всегда заполнялось после открытия последней трассировки.
  • Исправлена проблема в окнах дизассембли и памяти , которые не всегда обновлялись после ввода нового значения.
  • Исправлена цветовая схема строки заголовка в темной теме.
  • Исправлено представление отложенных брейкпоинтов в окне брейкпоинтов, где местоположение отображается 0x0 вместо исходного выражения, введенного при его создании. Он также имеет отдельный значок, указывающий, что он не привязан.
  • Исправлена проблема в окнах "Локальные" и "Просмотр", когда при щелчке правой кнопкой мыши на видимый объект представление прокручивалось вверх.
  • Исправлены проблемы с natvis. Дополнительные сведения см. в исходном отчете об ошибках.
  • Исправлен спам от отладчика с сообщением kd. Дополнительные сведения см. в исходном отчете об ошибках.
  • Исправлена проблема с gc, которая автоматически инициировала условные точки останова, если условие было ложным.
  • Исправлена проблема, из-за которой регистры YMM и ZMM теперь можно просматривать при отладке трассировки TTD.

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

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

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

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

Отладка перемещения по времени

1.2410.11001.0

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

Теперь dbghelp.dll динамически связывается с msdia140.dll. Это изменение должно влиять только на средства, распространяющие dbghelp.dll, не включая msdia140.dll. Пакеты NuGet, включающие dbghelp.dll, также включают msdia140.dll.

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

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

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

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

1.2409.17001.0

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

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

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

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

Отладка перемещения по времени

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. Дополнительные сведения см. в следующих статьях:

В обозримом будущем клиент 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 для возможности выполнения дампа очередей запуска планировщика ядра процессора (аналогично команде утилиты аварийного завершения Linux runq).
    • Исправлены различные команды в LinuxKernel.js, чтобы соответствовали изменениям ядра. В более поздних ядрах дерево таймера использует кэшированные узлы RB вместо необработанных узлов RB. В более поздних ядрах список исчез, all_bdevs поэтому блоковые устройства теперь переходят из суперблока (blockdev_superblock).
  • Исправлены разные natvis ошибки для работы более схожей с последними версиями Visual Studio.
  • Предпочтительнее sourcelink, в отличие от устаревшего sourceinfo.
    • Добавлена !lmsourcesinfo <module> команда для отображения sourcelink потоков из 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@0 и foo@1

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

1.2104.13002.0

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

Пример:

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

Снимок экрана окна WinDbg **Command**, на котором выделены различные форматы чисел.

Эта функция также работает с временными выделениями. Нажмите клавиши CTRL и дважды щелкните номер, чтобы выделить все его экземпляры. Вы можете отслеживать несколько важных чисел в журнале команд таким образом. (Чтобы очистить выделение, нажмите клавиши CTRL и дважды щелкните номер еще раз.) Наконец, эта функция также работает при поиске чисел, нажав клавиши 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 тип доступа к данным. Запросы памяти, такие как dx @$cursession.TTD.Memory() теперь, имеют другой столбец, показывающий старые значения записей.

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

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

1.0.2007.01003

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

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

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

Снимок экрана: диалоговое окно новой закладки с примером имени первого вызова API в приложении

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

Снимок экрана: временная шкала WinDbg с тремя закладками и подсказкой, отображающей имя закладки.

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

Снимок экрана: всплывающее меню закладки правой кнопкой мыши с параметрами для перемещения по позиции, редактированию и удалению.

Окно модулей

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

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

Снимок экрана: окно модулей 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".

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

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

1.0.1912.11001

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

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

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

1.0.1908.30002

  • Улучшения объектов вызовов TTD: теперь запросы вызовов включают имена параметров, типы и значения. При запросе между трассировками для вызовов функций можно получить полностью типизированные параметры и их значения. Эта возможность упрощает фильтрацию результатов по параметрам.
  • Поддержка Open Enclave: Предварительная версия WinDbg теперь может выполнять отладку приложений Open Enclave. Дополнительные сведения см. в статье об отладке Open Enclave.
  • Дампы ядра ELF: В рамках поддержки Open Enclave, WinDbg может открывать дампы ядра ELF и двоичные файлы, а также символы DWARF (в настоящее время DWARF 5 не поддерживается) и из анклавов, и из приложений Linux. При открытии дампа памяти из приложения, отличного от Windows, базовые окна и команды должны работать правильно, но большинство расширений и команд Windows не работают. Файлы ELF и DWARF загружаются с серверов символов в соответствии с основными соглашениями, определенными в соглашениях о ключах SSQP. Анклав является единственным поддерживаемым сценарием, но мы приветствуем отзывы об открытии других дампов памяти Linux.
  • Изменение формата файла TTD: основное обновление формата файла для трассировки TTD прерывает совместимость вперед. Предыдущие версии WinDbg Preview не могут открывать трассировки, записанные с этой версией и будущими версиями WinDbg Preview. Эта версия и будущие версии смогут открывать как новые, так и старые трассировки.

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

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

1.0.1905.12001

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

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

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

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

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

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

  • : мы исправили ошибку, которая могла помешать (ненавязчивому подключению) в некоторых обстоятельствах.

1.0.1904.18001

  • Исправлена ошибка SymSetDiaSession: у нас были отчеты об ошибке, которая предотвращает открытие Предварительной версии WinDbg в некоторых ситуациях. Несколько внешних приложений пытаются внедрить версию DbgHelp в наш процесс перед загрузкой. Некоторые из них используют версию DbgHelp с отсутствующими функциями, что приводит к этой ошибке при попытке использовать эти функции. Мы добавили исправление этой проблемы и запланировали ее отслеживание, чтобы определить, существуют ли сценарии, в которых она по-прежнему возникает.
  • Управление шрифтом: мы добавили настройки для управления шрифтом и размером шрифта. Существует два разных параметра: одно — для текстовых окон (монопространствовые окна, такие как дизассембли, источник и команда), а один — для окон инструментов (например, "Локальные " и "Стек"). Эти параметры не влияют на несколько областей. Мы планируем обновить их в будущем.
  • Улучшение выделения: постоянное выделение текста в окне командной строки также выделяет текст в окнах "Источник " и "Заметки ".
  • Улучшения загрузки источника: мы изменили способ загрузки исходных файлов. Ранее при открытии исходного файла операции подсистемы, такие как выполнение дополнительных команд, не были возможными или непредсказуемы. Мы изменили точку загрузки, чтобы обеспечить возможность параллельного выполнения и более надежную отмену операций открытия исходных данных.

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

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

1.0.1812.12001

Эта версия включает следующие обновления:

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

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

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

1.0.1810.2001

Эта версия включает следующие обновления:

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

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

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

1.0.1807.11002

Эта версия включает следующие обновления:

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

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

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

1.0.1805.17002

Эта версия включает следующие обновления:

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

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

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

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

1.0.1804.18003

Эта версия включает следующие обновления:

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

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

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

1.0.14.0

Эта версия включает следующие обновления:

  • Улучшено взаимодействие с сервером обработки. Новое уведомление в меню "Файл " показывает, с каким сервером обработки вы подключаетесь и взаимодействуете. В рамках этих изменений при завершении сеанса отладки подключение сервера обработки сохраняется и вы можете отключиться в меню "Файл ".
  • Новые параметры макетов на вкладке «Вид»: На вкладке «Вид» доступен новый параметр «Макеты». В настоящее время существует три макета: значение по умолчанию, одно ориентировано на дизассембли и один минимальный.
  • Лента отладки перемещения по времени: при отладке трассировки TTD отображается расширенная лента Перемещение по времени.
  • Метаданные из скриптов JavaScript: расширения JavaScript теперь могут возвращать метаданные для свойств и других конструкций. Теперь расширение может предоставлять строки справки, указывать радикс отображения значений и многое другое. Метаданные предоставляются путем размещения дескриптора метаданных на объект через наличие Symbol.metadataDescriptor или явный вызов host.metadata.defineMetadata. Возвращаемые функции, итерированные значения и другие контексты значений могут возвращать метаданные для их значения с помощью host.metadata.valueWithMetadata.
  • Обновления API JavaScript: некоторые потенциально критические изменения на уровне исходного кода были внесены в интерфейсы API в поставщике JavaScript (включая новые методы и свойства встроенных объектов). Существующие расширения не увидят никаких потенциально разрушающих изменений, без указания поддержки новой версии API JsProvider. Поддержка новой версии API указывается путем размещения host.apiVersionSupport записи в массиве, возвращаемой initializeScript с утверждением о поддержке версии 1.1.

Изменения в API версии 1.1

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

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

  • Расширения JavaScript теперь могут добавлять и удалять свойства объектов модели данных с помощью Object.defineProperty оператора удаления. Добавление или регистрация класса JavaScript в качестве родительской модели или сигнатуры типов по-прежнему является предпочтительным способом управления объектной моделью.
  • Расширения JavaScript теперь могут изменять глобальные переменные в модулях в целевом объекте отладки с помощью нового host.setModuleSymbol API.
  • Все математические функции, которые находятся на 64-разрядном типе библиотеки (например, .add, , .subtract.multiplyи.divide) также присутствуют на номерах 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".