Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить распространенные ошибки, возникающие при использовании "Разрыв при изменении значений".
Диагностика ошибок "Не удается задать точку останова данных"
Внимание
Точки останова управляемых данных поддерживаются в .NET Core 3.0, .NET 5.0.3 и более поздних версиях. Последнюю версию можно загрузить здесь.
При использовании точек останова управляемых данных могут возникать следующие ошибки. В этой статье объясняется, почему эти ошибки происходят и предоставляют возможные решения или обходные пути для их устранения.
Версия .NET, используемая целевым процессом, не поддерживает точки останова данных. Для точек останова данных требуется .NET Core 3.x или .NET 5.0.3+, выполняющаяся в x86 или x64.
Управляемые точки останова в данных начали поддерживаться в .NET Core 3.0. В настоящее время она не поддерживается в платформа .NET Framework, версиях .NET Core в версии 3.0 или версиях .NET в версии 5.0.3.
Решение. Чтобы устранить эту ошибку, обновите проект до .NET Core 3.x или .NET 5+.
Значение не удается найти в управляемой куче и не удается отслеживать.
Переменные, объявленные в стеке.
Установка точек останова данных для переменных, созданных в стеке, не поддерживается, так как эти переменные будут недопустимыми после выхода функции.
Обходное решение. Задайте точки останова в строках, где используется переменная.
"Разрыв при изменении значения" в переменной, которая не развернута в раскрывающемся меню.
Отладчик должен знать объект, содержащий поле, которое нужно отслеживать. Сборщик мусора может перемещать объект вокруг кучи, поэтому отладчику необходимо знать объект, содержащий переменную, которую вы хотите отслеживать.
Обходное решение. Если вы находитесь в методе в объекте, на котором вы хотите задать точку останова данных, выполните следующие действия.
a. Перейдите к кадру, который содержит метод интересующего объекта.
b. Откройте окно "Локальные", "Авто" или "Контроль".
c. Найдите объект и разверните его, чтобы отобразить его поля.
d. Щелкните правой кнопкой мыши поле, в котором нужно задать точку останова данных и выберите "Разрыв", когда значение изменяется в контекстном меню.
Точки останова данных не поддерживаются для статических полей или статических свойств.
Статические поля и свойства в данный момент не поддерживаются. Если вы заинтересованы в этой функции, предоставьте отзыв.
Поля и свойства структур нельзя отслеживать.
В данный момент поля и свойства структур не поддерживаются. Если вы заинтересованы в этой функции, предоставьте отзыв.
Значение свойства изменилось и больше не может отслеживаться.
Свойство может изменить способ вычисления во время выполнения. Если это произойдет, количество переменных, которые зависит от увеличения свойства, и может превышать ограничение оборудования. Дополнительные сведения см. в следующей ошибке "Свойство зависит от большего объема памяти, чем может отслеживаться оборудованием".
Свойство зависит от большего объема памяти, чем может отслеживаться оборудованием.
Каждая архитектура имеет заданное количество байтов и аппаратных точек останова данных, которые могут поддерживаться, а свойство, в котором необходимо задать точку останова данных, превысило это ограничение. Ознакомьтесь с таблицей ограничений оборудования точки останова данных, чтобы узнать, сколько аппаратных точек останова и байтов доступны для используемой архитектуры.
Обходное решение. Задайте точку останова данных для значения, которое может измениться в свойстве.
Точки останова данных не поддерживаются при использовании устаревшего средства оценки выражений C#.
Точки останова данных поддерживаются только в неисследующем средство оценки выражений C#.
Решение. Чтобы отключить устаревший средство оценки выражений C#, выполните следующие действия.
- Перейдите в меню отладки в Visual Studio.
- Выберите Параметры.
- Перейдите к разделу "Общие сведения об отладке>".
- Снимите флажок "Использовать устаревшие средства оценки выражений C# и VB".
Класс X имеет пользовательское представление отладчика, которое блокирует использование точек останова данных только для данных.
Точки останова данных поддерживаются только в памяти, созданной целевым процессом (отлаживаемым приложением). Память, в которой задана точка останова данных, помечена как возможно принадлежащий объекту, созданному атрибутом DebuggerTypeProxy или другим элементом, который не является частью целевого процесса.
Обходное решение. Разверните необработанное представление вместо представления DebuggerTypeProxy объекта, а затем задайте точку останова данных. Это гарантирует, что точка останова данных не принадлежит памяти, созданной
DebuggerTypeProxy
атрибутом.
Аппаратные ограничения на количество точек останова в данных
Архитектура (конфигурация платформы), в которой выполняется программа, имеет ограниченное количество точек останова аппаратных данных. В следующей таблице указывается, сколько регистров можно использовать для каждой архитектуры.
Архитектура | Количество точек останова данных, поддерживаемых оборудованием | Максимальный размер байтов |
---|---|---|
x86 | 4 | 4 |
x64 | 4 | 8 |
ARM | 1 | 4 |
ARM64 | 2 | 8 |
Предоставление отзыва
Чтобы узнать о любых проблемах или предложениях об этой функции, сообщите нам о >>проблеме в интегрированной среде разработки или Сообщество разработчиков.