Открыть окно память visual studio
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Find memory leaks and inefficient memory while you're debugging with the debugger-integrated diagnostic tool.
Find memory leaks and inefficient memory while you're debugging with the debugger-integrated Memory Usage diagnostic tool. The Memory Usage tool lets you take one or more snapshots of the managed and native memory heap to help understand the memory usage impact of object types. You can also analyze memory usage without a debugger attached or by targeting a running app. For more information, see Run profiling tools with or without the debugger. For information on choosing the best memory analysis tool for your needs, see Choose a memory analysis tool.
Although you can collect memory snapshots at any time in the Memory Usage tool, you can use the Visual Studio debugger to control how your application executes while investigating performance issues. Setting breakpoints, stepping, Break All, and other debugger actions can help you focus your performance investigations on the code paths that are most relevant. Performing those actions while your app is running can eliminate the noise from the code that doesn't interest you and can significantly reduce the amount of time it takes you to diagnose an issue.
In this tutorial, you will:
- Take snapshots of memory
- Analyze memory usage data
If Memory Usage does not give you the data that you need, other profiling tools in the Performance Profiler provide different kinds of information that might be helpful to you. In many cases, the performance bottleneck of your application may be caused by something other than your memory, such as CPU, rendering UI, or network request time.
[!NOTE] Custom Allocator Support The native memory profiler works by collecting allocation ETW event data emitted during run time. Allocators in the CRT and Windows SDK have been annotated at the source level so that their allocation data can be captured. If you are writing your own allocators, then any functions that return a pointer to newly allocated heap memory can be decorated with __declspec(allocator), as seen in this example for myMalloc:
__declspec(allocator) void* myMalloc(size_t size)
Collect memory usage data
Open the project you want to debug in Visual Studio and set a breakpoint in your app at the point where you want to begin examining memory usage.
If you have an area where you suspect a memory issue, set the first breakpoint before the memory issue occurs.
[!TIP] Because it can be challenging to capture the memory profile of an operation that interests you when your app frequently allocates and de-allocates memory, set breakpoints at the start and end of the operation (or step through the operation) to find the exact point that memory changed.
Set a second breakpoint at the end of the function or region of code that you want to analyze (or after a suspected memory issue occurs).
The Diagnostic Tools window appears automatically unless you have turned it off. To bring up the window again, click Debug > Windows > Show Diagnostic Tools.
Choose Memory Usage with the Select Tools setting on the toolbar.
Click Debug / Start Debugging (or Start on the toolbar, or F5).
When the app finishes loading, the Summary view of the Diagnostics Tools appears.
[!NOTE] Because collecting memory data can affect the debugging performance of your native or mixed-mode apps, memory snapshots are disabled by default. To enable snapshots in native or mixed-mode apps, start a debugging session (Shortcut key: F5). When the Diagnostic Tools window appears, choose the Memory Usage tab, and then choose Heap Profiling.
Stop (Shortcut key: Shift+F5) and restart debugging.
[!NOTE] Because collecting memory data can affect the debugging performance of your native or mixed-mode apps, memory snapshots are disabled by default. To enable snapshots in native or mixed-mode apps, start a debugging session (Shortcut key: F5). When the Diagnostic Tools window appears, choose the Memory Usage tab, and then choose Heap Profiling.
Stop (Shortcut key: Shift+F5) and restart debugging.
To take a snapshot at the start of your debugging session, choose Take snapshot on the Memory Usage summary toolbar. (It may help to set a breakpoint here as well.)
[!TIP] To create a baseline for memory comparisons, consider taking a snapshot at the start of your debugging session.
Run the scenario that will cause your first breakpoint to be hit.
While the debugger is paused at the first breakpoint, choose Take snapshot on the Memory Usage summary toolbar.
Press F5 to run the app to your second breakpoint.
Now, take another snapshot.
At this point, you can begin to analyze the data.
Analyze memory usage data
The rows of Memory Usage summary table lists the snapshots that you have taken during the debugging session and provides links to more detailed views.
When you have taken multiple snapshots, the cells of the summary table include the change in the value between the row snapshot and the previous snapshot.
To analyze memory usage, click one of the links that opens up a detailed report of memory usage:
- To view details of the difference between the current snapshot and the previous snapshot, choose the change link to the left of the arrow (). A red arrow indicates an increase in memory usage, and a green arrow indicates a decrease.
[!TIP] To help identify memory issues more quickly, the diff reports are sorted by object types that increased the most in overall number (click the change link in Objects (Diff) column) or that increased the most in overall heap size (click the change link in Heap Size (Diff) column).
To view details of only the selected snapshot, click the non-change link.
The report appears in a separate window.
Managed types reports
Choose the current link of an Objects (Diff) or Allocations (Diff) cell in the Memory Usage summary table.
The top pane shows the count and size of the types in the snapshot, including the size of all objects that are referenced by the type (Inclusive Size).
The Referenced Objects tree displays the references that are held by the type selected in the upper pane.
The Referenced Types tree displays the references that are held by the type selected in the upper pane.
To display the instances of a selected type in the upper pane, click on "View Instances" next to the object type.
The Instances view displays the instances of the selected object in the snapshot in the upper pane. The Paths to Root and Referenced Objects pane displays the objects that reference the selected instance and the types that the selected instance references. When the debugger is stopped at the point where the snapshot was taken, you can hover over the Value cell to display the values of the object in a tool tip.
Native type reports
Choose the current link of an Allocations (Diff) or Heap Size (Diff) cell in the Memory Usage summary table of the Diagnostic Tools window.
The Types View displays the number and size of the types in the snapshot.
Choose the instances icon ( ) of a selected type to display information about the objects of the selected type in the snapshot.
The Instances view displays each instance of the selected type. Selecting an instance displays the call stack that resulted in the creation of the instance in the Allocation Call Stack pane.
Choose View Instances next to a selected type to display information about the objects of the selected type in the snapshot.
The Instances view displays each instance of the selected type. Selecting an instance displays the call stack that resulted in the creation of the instance in the Allocation Call Stack pane.
Choose Stacks View in the View Mode list to see the allocation stack for the selected type.
Choose Stacks to see the allocation stack for the selected type.
Change (Diff) reports
Choose the change link in a cell of the summary table of the Memory Usage tab on the Diagnostic Tools window.
Choose a snapshot in the Compare To list of a managed or native report.
The change report adds columns (marked with (Diff)) to the base report that show the difference between the base snapshot value and the comparison snapshot. Here's how a Native Type View diff report might look:
Blogs and videos
In this tutorial, you've learned how to collect and analyze memory usage data. If you already completed the tour of the profiler, you may want to get a quick look at how to analyze CPU usage in your apps.
Во время отладки в окне Память отображается используемая приложением область памяти.
В окнах отладчика, таких как Контрольные, Видимые, Локальные, и в диалоговом окне Быстрая проверка отображаются переменные, которые хранятся в определенных областях памяти. Окно Память показывает более полную картину. Такое представление памяти может быть полезно при анализе больших частей данных (например, буферов или больших строк), которые плохо отображаются в других окнах.
В окне Память могут отображаться не только данные. В нем может отображаться все, что находится в области памяти, включая данные, код или случайные биты мусора из свободного участка памяти.
Окно Память недоступно для отладки скриптов и SQL. Эти языки не распознают концепцию памяти.
Открытие окна "Память"
Как и другие окна отладчика, окна Память доступны только во время сеанса отладки.
Чтобы включить окна Память, необходимо выбрать параметр Включить отладку на уровне адреса в разделе Сервис > Параметры (или Отладка > Параметры) > Отладка > Общие.
Открытие окна "Память"
Убедитесь, что в разделе Сервис > Параметры (или Отладка > Параметры) > Отладка > Общие выбран параметр Включить отладку на уровне адреса.
Запустите отладку, щелкнув зеленую стрелку, нажав клавишу F5 или выбрав команду Отладка > Начать отладку.
В разделе Отладка > Windows > Память выберите Память 1, Память 2, Память 3 или Память 4. (Некоторые выпуски Visual Studio предлагают только одно окно Память.)
Перемещение по окну "Память"
Адресное пространство компьютера велико, и вы можете легко потерять нужное место при прокрутке окна Память.
Старшие адреса памяти отображаются в нижней части экрана. Для просмотра старших адресов следует прокрутить экран вниз. Для просмотра младших адресов следует прокрутить экран вверх.
Чтобы принудительно выполнить немедленное повторное вычисление выражения в поле Адрес, выберите значок Автоматический пересчет.
По умолчанию окно Память обрабатывает выражения Адрес как динамические выражения, которые вычисляются повторно по мере выполнения приложения. Динамические выражения могут быть удобны, например, для просмотра участка памяти, на который ссылается переменная-указатель.
Использование перетаскивания для перемещения к области памяти:
Выберите в любом окне отладчика адрес памяти или переменную-указатель, содержащую адрес памяти.
Перетащите адрес или указатель в окно Память. Этот адрес появляется в поле Адрес, а окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Перемещение к участку памяти путем его ввода в поле "Адрес":
- Введите или вставьте адрес или выражение в поле Адрес и нажмите клавишу ВВОД или выберите значение в раскрывающемся списке в поле Адрес. Окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Настройка окна "Память"
По умолчанию содержимое памяти отображается в виде шестнадцатеричных однобайтовых целых чисел, а ширина окна определяет количество отображаемых столбцов. Можно настроить способ отображения содержимого памяти в окне Память.
Изменение формата содержимого памяти:
- Щелкните правой кнопкой мыши в окне Память и выберите нужные форматы в контекстном меню.
Изменение числа столбцов в окне "Память":
- Щелкните стрелку раскрывающегося списка рядом с полем Столбцы и выберите число отображаемых столбцов или выберите Авто для автоматической подгонки по ширине окна.
Если требуется, чтобы содержимое окна Память не изменялось при выполнении приложения, можно отключить вычисление динамических выражений.
Включение или выключение вычисления в режиме реального времени:
Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Автоматический пересчет.
Вычисление динамических выражений представлено переключателем и по умолчанию включено, поэтому при выборе Автоматический пересчет оно отключается. Чтобы снова включить его, выберите Автоматический пересчет.
Можно скрывать или отображать панель инструментов в верхней части окна Память. Когда панель инструментов скрыта, поле Адрес и другие инструменты недоступны.
Переключение отображения панели инструментов:
- Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Показать панель инструментов. Панель инструментов появится или исчезнет, в зависимости от своего предыдущего состояния.
Отслеживание указателя в памяти
В приложениях машинного кода можно использовать имена регистров в качестве динамических выражений. Например, можно использовать указатель стека для отслеживания стека.
Отслеживание указателя в памяти:
В поле Адрес окна Память введите выражение указателя, которое находится в текущей области. В зависимости от языка может возникнуть необходимость в ее разыменовании.
Нажмите клавишу ВВОД.
При использовании команды отладки, такой как Шаг, адрес памяти, отображаемый в поле Адрес и в верхней части окна Память, автоматически изменяется при изменении указателя.
During debugging, the Memory window shows the memory space your app is using.
Debugger windows like Watch, Autos, Locals, and the QuickWatch dialog show you variables, which are stored at specific locations in memory. The Memory window shows you the overall picture. The memory view is convenient for examining large pieces of data (buffers or large strings, for example) that don't display well in the other windows.
The Memory window isn't limited to displaying data. It displays everything in the memory space, including data, code, and random bits of garbage in unassigned memory.
The Memory window isn't available for script or SQL debugging. Those languages don't recognize the concept of memory.
Open a Memory window
Like other debugger windows, the Memory windows are available only during a debugging session.
To enable the Memory windows, Enable address-level debugging must be selected in Tools > Options (or Debug > Options) > Debugging > General.
To open a Memory window
Make sure Enable address-level debugging is selected in Tools > Options (or Debug > Options) > Debugging > General.
Start debugging by selecting the green arrow, pressing F5, or selecting Debug > Start Debugging.
Under Debug > Windows > Memory, select Memory 1, Memory 2, Memory 3, or Memory 4. (Some editions of Visual Studio offer only one Memory window.)
Move around in the Memory window
The address space of a computer is large, and you can easily lose your place by scrolling in the Memory window.
Higher memory addresses appear at the bottom of the window. To view a higher address, scroll down. To view a lower address, scroll up.
To force immediate re-evaluation of an expression in the Address field, select the rounded-arrow Reevaluate Automatically icon.
By default, the Memory window treats Address expressions as live expressions, which are re-evaluated as the app runs. Live expressions can be useful, for example, to view the memory that is touched by a pointer variable.
To use drag and drop to move to a memory location:
In any debugger window, select a memory address, or a pointer variable that contains a memory address.
Drag and drop the address or pointer in the Memory window. That address then appears in the Address field, and the Memory window adjusts to display that address at the top.
To move to a memory location by entering it in the Address field:
- Type or paste the address or expression in the Address field and press Enter, or choose it from the dropdown in the Address field. The Memory window adjusts to display that address at the top.
Customize the Memory window
By default, memory contents appear as 1-byte integers in hexadecimal format, and the window width determines the number of columns shown. You can customize the way the Memory window shows memory contents.
To change the format of the memory contents:
- Right-click in the Memory window, and choose the formats that you want from the context menu.
To change the number of columns in the Memory window:
- Select the drop down arrow next to the Columns field, and select the number of columns to display, or select Auto for automatic adjustment based on window width.
If you do not want the contents of the Memory window to change as your app runs, you can turn off live expression evaluation.
To toggle live evaluation:
Right-click in the Memory window, and select Reevaluate Automatically in the context menu.
Live expression evaluation is a toggle, and is on by default, so selecting Reevaluate Automatically turns it off. Selecting Reevaluate Automatically again turns it back on.
You can hide or display the toolbar at the top of the Memory window. You will not have access to the Address field or other tools when the toolbar is hidden.
To toggle the toolbar display:
- Right-click in the Memory window, and select Show Toolbar in the context menu. The toolbar appears or disappears, depending on its previous state.
Follow a pointer through memory
In native code apps, you can use register names as live expressions. For example, you can use the stack pointer to follow the stack.
To follow a pointer through memory:
In the Memory window Address field, enter a pointer expression that is in the current scope. Depending on the language, you might have to dereference it.
Press Enter.
When you use a debug command such as Step, the memory address displayed in the Address field and at the top of the Memory window automatically changes as the pointer changes.
С помощью встроенного в отладчик средства диагностики Использование памяти вы сможете находить утечки памяти и выявлять ее неэффективное использование. С помощью средства "Использование памяти" можно сделать один или несколько снимков управляемой и собственной памяти в куче, чтобы понять влияние использования памяти типов объектов. Анализировать использование памяти также можно без подключения отладчика — нужно просто указать выполняющееся приложение. Дополнительные сведения см. в разделе Запуск средств профилирования с отладчиком или без него. Сведения о выборе необходимого средства анализа памяти см. в разделе Выбор инструмента для анализа памяти.
Хотя с помощью средства Использование памяти можно делать снимки памяти в любой момент, для управления выполнением приложения во время анализа ошибок производительности вы можете использовать отладчик Visual Studio. Задание точек останова, пошаговое выполнение, всеобщее прерывание и другие действия отладчика могут помочь вам сосредоточиться на анализе производительности при обращении к наиболее важным ветвям кода. Выполняя эти действия, когда приложение запущено, вы сможете исключить влияние не интересующего вас кода и значительно ускорить диагностику проблем.
В этом руководстве рассмотрены следующие задачи:
- Создание моментальных снимков с данными об использовании памяти
- Анализ данных использования памяти
Если средство Использование памяти не предоставляет необходимые данные, можно воспользоваться другими средствами профилирования в Профилировщике производительности, предоставляющими другие виды информации, которая может оказаться полезной. Как правило, проблемы производительности приложения могут вызываться другими компонентами помимо памяти, такими как ЦП, отрисовка пользовательского интерфейса или время запроса сети.
Поддержка пользовательского распределителя. Профилировщик внутренней памяти работает путем сбора данных событий ETW выделения памяти, создаваемых во время выполнения. Распределители в CRT и пакете Windows SDK аннотированы на уровне исходного кода, что позволяет регистрировать их данные выделения. Если вы создаете собственные распределители, любые функции, возвращающие указатель на только что выделенную память в куче, можно декорировать с использованием __declspec(allocator), как показано в этом примере для myMalloc:
__declspec(allocator) void* myMalloc(size_t size)
Сбор данных об использовании памяти
Откройте проект для отладки в Visual Studio и установите точку останова в приложении в точке, где вы хотите начать проверку использования памяти.
Если вы подозреваете, что в определенной области памяти может возникнуть проблема, задайте первую точку останова до ее возникновения.
Так как из-за изменений в объеме выделяемой памяти создание профиля памяти для интересующей вас операции может быть затруднительно, разместите точки останова в начале и в конце операции или пройдите по ней, чтобы попробовать найти точку, в которой объем памяти изменился.
Установите вторую точку останова в конце функции или области кода, который требуется проанализировать, либо после возникновения предполагаемой проблемы с памятью.
Окно Средства диагностики появится автоматически, если вы не отключали эту функцию. Чтобы снова открыть окно, щелкните Отладка > Окна > Показать средства диагностики.
На панели инструментов выберите Использование памяти, применяя параметр Выбор средств.
Щелкните Отладка | Начать отладку (Запустить на панели инструментов или F5).
По завершении загрузки приложения отображается представление "Сводка" средств диагностики.
Поскольку сбор данных об использовании памяти может повлиять на производительность отладки приложений, основанных на машинном коде, а также смешанных программ, по умолчанию снимки памяти выключены. Чтобы включить моментальные снимки для приложений на базе машинного кода или для смешанных программ, начните сеанс отладки (клавиша: F5). Когда отобразится окно Средства диагностики, перейдите на вкладку Использование памяти и выберите Профилирование кучи.
Остановите (сочетание клавиш: SHIFT+F5) и перезапустите отладку.
Поскольку сбор данных об использовании памяти может повлиять на производительность отладки приложений, основанных на машинном коде, а также смешанных программ, по умолчанию снимки памяти выключены. Чтобы включить моментальные снимки для приложений на базе машинного кода или для смешанных программ, начните сеанс отладки (клавиша: F5). Когда отобразится окно Средства диагностики, перейдите на вкладку Использование памяти и выберите Профилирование кучи.
Остановите (сочетание клавиш: SHIFT+F5) и перезапустите отладку.
Чтобы сделать моментальный снимок в начале сеанса отладки, на сокращенной панели инструментов Использование памяти выберите команду Сделать снимок. (Таким образом здесь также можно задать точку останова.)
Чтобы получить базовые показатели для сравнения состояния памяти, сделайте снимок в начале сеанса отладки.
Запустите сценарий, который вызвал срабатывание первой точки останова.
После приостановки отладчика на первой точке останова на сокращенной панели инструментов Использование памяти выберите команду Сделать снимок.
Нажмите клавишу F5, чтобы запустить приложение до второй точки останова.
Теперь создайте еще один моментальный снимок.
На этом этапе можно начать анализировать данные.
Анализ данных использования памяти
В строках сводной таблицы "Использование памяти" приводятся моментальные снимки, сделанные во время сеанса отладки, и ссылки на дополнительные подробные представления.
Если сделать несколько снимков, в каждой строке сводной таблицы будет отображаться разница значений с предыдущим снимком.
Чтобы выполнить анализ данных об использовании памяти, щелкните одну из ссылок, которая позволяет открыть подробный отчет об использовании памяти:
- Чтобы отобразить подробности об изменении текущего моментального снимка по сравнению с предыдущим, щелкните ссылку разницы слева от стрелки (). Красная стрелка обозначает, что объем используемой памяти увеличился, а зеленая — что он снизился.
Чтобы быстрее выявить проблемы с памятью, типы объектов в отчетах об изменениях можно отсортировать по наибольшему увеличению общего объема (щелкните ссылку "Изменения" в столбце Объекты (разн.) ) или по наибольшему увеличению размера кучи (щелкните ссылку "Изменения" в столбце Размер кучи (разн.) ).
Чтобы отобразить подробности только для выбранного моментального снимка, щелкните ссылку "Без изменений".
Отчет отображается в новом окне.
Отчеты об управляемых типах
Щелкните текущую ссылку в ячейке Объекты (разн.) или Выделения (разн.) в сводной таблице "Использование памяти".
В дереве Объекты, на которые указывает ссылка отображаются ссылки, активные для выбранного в верхней области типа.
В дереве Типы, на которые указывает ссылка отображаются ссылки, активные для выбранного в верхней области типа.
Чтобы отобразить экземпляры типа, выбранного в верхней области, нажмите кнопку "Просмотреть экземпляры" рядом с типом объекта.
На панели Экземпляры , которая открывается в верхней области, отображаются экземпляры выбранного объекта текущего снимка. На панелях Пути к корню и Объекты, на которые указывает ссылка отображаются объекты, которые ссылаются на выбранный экземпляр, а также типы, на которые ссылается выбранный экземпляр. Если создать снимок после остановки отладчика и навести указатель мыши на ячейку в столбце Значение, во всплывающей подсказке отобразятся значения объекта.
Отчеты о собственных типах
Щелкните текущую ссылку в ячейке Выделения (разн.) или Размер кучи (разн.) в сводной таблице "Использование памяти", отображаемой в окне Средства диагностики.
В окне Экземпляры отображаются все экземпляры выбранного типа. При выборе экземпляра на панели Стек вызовов выделений отображается стек вызовов, использованный для создания этого экземпляра.
В окне Экземпляры отображаются все экземпляры выбранного типа. При выборе экземпляра на панели Стек вызовов выделений отображается стек вызовов, использованный для создания этого экземпляра.
Чтобы отобразить стек вызовов для выбранного типа, в раскрывающемся меню Режим просмотра выберите пункт Представление стеков .
Чтобы отобразить стек выделений для выбранного типа, выберите Стеки.
Отчеты об изменениях
В окне Средства диагностики щелкните в необходимой ячейке сводной таблицы Использование памяти разницу в значениях.
Выберите моментальный снимок в списке Сравнить с , в котором отображаются управляемые или собственные отчеты.
С помощью отчета об изменениях в основной отчет можно добавить столбцы, помеченные надписью (Разн.) , в которых будет отображаться разница между двумя выбранными снимками. Отчет об изменениях собственных типов может выглядеть следующим образом.
Блоги и видео
Следующие шаги
В этом руководстве вы узнали, как собирать и анализировать данные об использовании памяти. Если вы уже ознакомились с общими сведениями о профилировщике, можно перейти к анализу данных об использовании ЦП в приложениях.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Сведения о том, как использовать окна памяти при отладке для просмотра объема памяти, используемого приложением. Другие окна отображают переменные и место их расположения в памяти.
Во время отладки в окне Память отображается используемая приложением область памяти.
В окнах отладчика, таких как Контрольные, Видимые, Локальные, и в диалоговом окне Быстрая проверка отображаются переменные, которые хранятся в определенных областях памяти. Окно Память показывает более полную картину. Такое представление памяти может быть полезно при анализе больших частей данных (например, буферов или больших строк), которые плохо отображаются в других окнах.
В окне Память могут отображаться не только данные. В нем может отображаться все, что находится в области памяти, включая данные, код или случайные биты мусора из свободного участка памяти.
Окно Память недоступно для отладки скриптов и SQL. Эти языки не распознают концепцию памяти.
Открытие окна "Память"
Как и другие окна отладчика, окна Память доступны только во время сеанса отладки.
[!IMPORTANT] Чтобы включить окна Память, необходимо выбрать параметр Включить отладку на уровне адреса в разделе Сервис > Параметры (или Отладка > Параметры) > Отладка > Общие.
Открытие окна "Память"
Убедитесь, что в разделе Сервис > Параметры (или Отладка > Параметры) > Отладка > Общие выбран параметр Включить отладку на уровне адреса.
Запустите отладку, щелкнув зеленую стрелку, нажав клавишу F5 или выбрав команду Отладка > Начать отладку.
В разделе Отладка > Windows > Память выберите Память 1, Память 2, Память 3 или Память 4. (Некоторые выпуски [!INCLUDEvsprvs] предлагают только одно окно Память.)
Перемещение по окну "Память"
Адресное пространство компьютера велико, и вы можете легко потерять нужное место при прокрутке окна Память.
Старшие адреса памяти отображаются в нижней части экрана. Для просмотра старших адресов следует прокрутить экран вниз. Для просмотра младших адресов следует прокрутить экран вверх.
Чтобы принудительно выполнить немедленное повторное вычисление выражения в поле Адрес, выберите значок Автоматический пересчет.
По умолчанию окно Память обрабатывает выражения Адрес как динамические выражения, которые вычисляются повторно по мере выполнения приложения. Динамические выражения могут быть удобны, например, для просмотра участка памяти, на который ссылается переменная-указатель.
Использование перетаскивания для перемещения к области памяти:
Выберите в любом окне отладчика адрес памяти или переменную-указатель, содержащую адрес памяти.
Перетащите адрес или указатель в окно Память. Этот адрес появляется в поле Адрес, а окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Перемещение к участку памяти путем его ввода в поле "Адрес":
- Введите или вставьте адрес или выражение в поле Адрес и нажмите клавишу ВВОД или выберите значение в раскрывающемся списке в поле Адрес. Окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Настройка окна "Память"
По умолчанию содержимое памяти отображается в виде шестнадцатеричных однобайтовых целых чисел, а ширина окна определяет количество отображаемых столбцов. Можно настроить способ отображения содержимого памяти в окне Память.
Изменение формата содержимого памяти:
- Щелкните правой кнопкой мыши в окне Память и выберите нужные форматы в контекстном меню.
Изменение числа столбцов в окне "Память":
- Щелкните стрелку раскрывающегося списка рядом с полем Столбцы и выберите число отображаемых столбцов или выберите Авто для автоматической подгонки по ширине окна.
Если требуется, чтобы содержимое окна Память не изменялось при выполнении приложения, можно отключить вычисление динамических выражений.
Включение или выключение вычисления в режиме реального времени:
Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Автоматический пересчет.
[!NOTE] Вычисление динамических выражений представлено переключателем и по умолчанию включено, поэтому при выборе Автоматический пересчет оно отключается. Чтобы снова включить его, выберите Автоматический пересчет.
Можно скрывать или отображать панель инструментов в верхней части окна Память. Когда панель инструментов скрыта, поле Адрес и другие инструменты недоступны.
Переключение отображения панели инструментов:
- Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Показать панель инструментов. Панель инструментов появится или исчезнет, в зависимости от своего предыдущего состояния.
Отслеживание указателя в памяти
В приложениях машинного кода можно использовать имена регистров в качестве динамических выражений. Например, можно использовать указатель стека для отслеживания стека.
Отслеживание указателя в памяти:
В поле Адрес окна Память введите выражение указателя, которое находится в текущей области. В зависимости от языка может возникнуть необходимость в ее разыменовании.
Нажмите клавишу ВВОД.
При использовании команды отладки, такой как Шаг, адрес памяти, отображаемый в поле Адрес и в верхней части окна Память, автоматически изменяется при изменении указателя.
Читайте также: