Qt 4.8.7 артефакты памяти
Мне нужно использовать Qt 4.8.7 для Embedded Linux, чтобы создать очень простой проект для тестирования. Проект включает в себя 2 формы - Dialog (состоит из QTextEdit и button. Кнопка очищает QTextEdit и QClipboard) и MainWindow (состоит из кнопки, которая выполняет Dialog).
Я редактирую текст, копирую его часть. Затем очистите редактор и буфер обмена. После этого я не могу вставить текст, но я выгружаю память с помощью gcore и вижу скопированный текст (несколько копий в виде HTML). Что эти объекты остались в памяти? Это временные объекты или утечки памяти? Или я использую что-то неправильно.
1 ответ
Если у вас уже есть ядро на базе ELF от Linux на платформе x86 и ваш процесс использовал libc malloc, один из способов понять, что это за объекты (временные объекты или утечки), - это использовать бесплатное программное обеспечение с открытым исходным кодом https://github.com/vmware/chap чтобы понять это. После того, как вы построили Chap, вы начинаете это так:
глава core-file-name
Затем, чтобы ответить на ваш конкретный вопрос, введите в командной строке следующие команды:
перенаправить на
шоу просочилось
шоу на якоре
показать бесплатно
Затем посмотрите в каждом из 3 полученных текстовых файлов шаблон, который вы видели в ядре. Если паттерн виден в выводе "show leaked", у вас есть утечка. Если это видно в выходных данных "show anchored", объекты, скорее всего, удерживаются в каком-либо контейнере, но все же существует вероятность, что он утек. Если это видно в выходных данных "show free", это из временного выделения, которое теперь было освобождено.
В качестве альтернативы, если вы уже знаете виртуальный адрес этого шаблона и хотите посмотреть, как он использовался, после запуска главы на данном ядре вы можете просто использовать следующую команду:
опишите виртуальный адрес в шестнадцатеричном формате