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", это из временного выделения, которое теперь было освобождено.

В качестве альтернативы, если вы уже знаете виртуальный адрес этого шаблона и хотите посмотреть, как он использовался, после запуска главы на данном ядре вы можете просто использовать следующую команду:

опишите виртуальный адрес в шестнадцатеричном формате

Другие вопросы по тегам