Spec-Zone.ru › Tcl/Tk

memory

Имя
memory — Управление возможностями отладки памяти Tcl
Синтаксис
Описание
memory active файл
memory break_on_malloc количество
memory info
memory init [вкл|выкл]
memory objs файл
memory onexit файл
memory tag строка
memory trace [вкл|выкл]
memory trace_on_at_malloc количество
memory validate [вкл|выкл]
См. также
Ключевые слова

Имя

memory — Управление возможностями отладки памяти Tcl

Синтаксис

memory параметр ?аргумент аргумент ...?

Описание

Команда memory предоставляет разработчику Tcl управление возможностями отладки памяти Tcl. Команда memory имеет несколько подпараметров, которые описаны ниже. Она доступна только тогда, когда Tcl скомпилирован с включенной отладкой памяти (когда TCL_MEM_DEBUG определён во время компиляции), и после вызова Tcl_InitMemory.
memory active файл
Записывает список всех выделенных в настоящее время участков памяти в указанный файл.
memory break_on_malloc количество
После выполнения количества выделений, ckalloc выводит сообщение об этом и о том, что сейчас пытается войти в отладчик C. Затем Tcl отправит сигнал SIGINT самому себе. Если вы запускаете Tcl под C отладчиком, он должен войти в режим командной строки отладчика.
memory info
Возвращает отчёт, содержащий общее количество выделений и освобождений с момента запуска Tcl, текущее количество выделенных пакетов (текущее количество вызовов ckalloc, не встретивших соответствующий вызов ckfree), текущий объём выделенной памяти и максимальное количество пакетов и объём выделенной памяти.
memory init [вкл|выкл]
Включает или выключает предварительную инициализацию всей выделенной памяти с помощью фиктивных байтов. Полезно для обнаружения использования неинициализированных значений.
memory objs файл
Приводит к записи списка всех выделенных значений Tcl_Obj в указанный файл немедленно, вместе с местом их выделения. Полезно для проверки утечек значений.
memory onexit файл
Приводит к записи списка всей выделенной памяти в указанный файл во время завершения подсистемы памяти Tcl. Полезно для проверки правильного освобождения памяти при выходе процесса.
memory tag строка
Каждый пакет памяти, выделенный ckalloc, может иметь связанную с ним строковую метку. В списках выделенной памяти, генерируемых командами memory active и memory onexit, метка каждого пакета печатается вместе с другой информацией о пакете. Команда memory tag задаёт значение метки для последующих вызовов ckalloc на строку.
memory trace [вкл|выкл]
Включает или выключает трассировку памяти. При включённой трассировке памяти каждый вызов ckalloc приводит к записи строки информации о трассировке в stderr, состоящей из слова ckalloc, за которым следуют возвращённый адрес, объём выделенной памяти и имя файла C и номер строки кода, выполняющего выделение. Например:
ckalloc 40e478 98 tclProc.c 1406

Вызовы ckfree отслеживаются аналогичным образом.

memory trace_on_at_malloc количество
Включить трассировку памяти после количества вызовов ckalloc. Например, если вы введёте memory trace_on_at_malloc 100, после 100-го вызова ckalloc, информация о трассировке памяти начнёт отображаться для всех выделений и освобождений. Поскольку до возникновения проблемы может произойти много операций с памятью, разумное использование этого параметра может уменьшить замедление, вызванное трассировкой (и количество производимой информации о трассировке), если вы можете определить количество выделений, происходящих до возникновения проблемы. Текущее количество выделений памяти, произошедших с момента запуска Tcl, отображается при сбое в защитной зоне.
memory validate [вкл|выкл]
Включает или выключает проверку памяти. При включённой проверке памяти при каждом вызове ckalloc или ckfree проверяются защитные зоны для каждого участка памяти, в настоящее время существующего и выделенного с помощью ckalloc. Это оказывает большое влияние на производительность и должно использоваться только в том случае, если есть сильные подозрения на проблемы с перезаписью. Преимущество включения проверки памяти заключается в том, что переполнение защитной зоны можно обнаружить при первом вызове ckalloc или ckfree после переполнения, а не тогда, когда конкретная память с переполненными защитными зонами будет освобождена, что может произойти много позже переполнения.

См. также

ckalloc, ckfree, Tcl_ValidateAllMemory, Tcl_DumpActiveMemory, TCL_MEM_DEBUG

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/memory.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/memory.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API