QTCreator Memcheck выполняет анализ, не позволяя мне запустить настоящую программу?

Я пытаюсь использовать инструмент Memcheck QTCreator для анализа памяти проекта QT, который является динамической библиотекой. Он использует графический интерфейс QT (QMainWindow), чтобы позволить пользователю выбрать файл, который затем обрабатывается, а затем в конечном итоге возвращается в главное окно.

Однако я не могу правильно использовать Memcheck.

Когда я выбираю «Memcheck» и нажимаю «Выполнить», он мгновенно переходит к «Анализу памяти», даже не позволяя всплывать графическому интерфейсу.

Это проблематично. Как я могу заставить memcheck работать с этой программой?


person Tyler Shellberg    schedule 17.01.2020    source источник
comment
Итак, приложение работает, но пользовательский интерфейс никогда не появляется? Или сразу выходит? Теперь, когда используется valgrind, все будет довольно медленно.. может быть, попробовать valgrind из CLI, чтобы увидеть, работает ли это в принципе.   -  person Frank Osterfeld    schedule 18.01.2020
comment
Кажется, что он работает, но должен также истечь время ожидания (без ввода пользователем), так как он, кажется, закончился в некотором смысле, так как я получаю результаты анализа обратно. Я попробую valgrind из CLI и доложу.   -  person Tyler Shellberg    schedule 18.01.2020
comment
По какой-то причине он не может найти DLL проекта. Может при запуске через QT. Странный. Поэтому я не могу запустить его из командной строки на данный момент.   -  person Tyler Shellberg    schedule 18.01.2020
comment
@FrankOsterfeld Похоже, мне нужно было взять LD_LIBRARY_PATH QTCreator и экспортировать его в кли, чтобы запустить его. Однако, когда я пытаюсь запустить его, он просто вылетает через пару минут, не показывая графический интерфейс. Журнал абсурдно длинный и, похоже, все связано с фреймворком QT, мы ничего не писали.   -  person Tyler Shellberg    schedule 18.01.2020


Ответы (1)


У меня было две основные проблемы:

1: Valgrind, похоже, плохо работает с приложениями QT Gui. Он генерирует журналы длиной в тысячи записей для всей работы, которую выполняет QT, еще до того, как он попадет в мое приложение.

Мне пришлось сделать отдельную небольшую программу на C++ без графического интерфейса, которая управлялась бы вместо приложения с графическим интерфейсом.

2: при попытке запуска из командной строки мне нужно было установить переменную среды, используя export. Это должно быть таким же, как LD_LIBRARY_PATHS в QT Creator.

Итак, я побежал:

export LD_LIBRARY_PATH=X где X было точным значением, которое я скопировал из LD_LIBRARY_PATHS в переменную из проекта QT.

Примечание. Запуск из командной строки, возможно, теперь не требуется, поскольку это не приложение с графическим интерфейсом, memcheck может пройти нормально. С тех пор не тестировал.

person Tyler Shellberg    schedule 17.01.2020