Russian Qt Forum
Ноябрь 24, 2024, 05:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Нужен совет по отладке  (Прочитано 33312 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #30 : Июнь 03, 2017, 08:31 »

Ну вообще-то "утечки" и "вылет" взаимосвязаны лишь иногда. Находить утечки в любом случае полезно, но это не гарантирует устранение вылета.

А вот вставить проверки кучи (есть ли битые блоки) очень даже к месту. В MSVC что-то есть. но помню смутно, только что ужасно корявое Улыбающийся Хотя и это ничего не гарантирует (куча сможет быть Ok), но все же это конкретный шаг который можно сделать за день-два

Лучший способ - получить больше информации об ошибке (я все время повторяюсь  Улыбающийся)
Записан
Ced
Гость
« Ответ #31 : Июнь 03, 2017, 09:00 »

Ну вообще-то "утечки" и "вылет" взаимосвязаны лишь иногда. Находить утечки в любом случае полезно, но это не гарантирует устранение вылета.

А вот вставить проверки кучи (есть ли битые блоки) очень даже к месту. В MSVC что-то есть. но помню смутно, только что ужасно корявое Улыбающийся Хотя и это ничего не гарантирует (куча сможет быть Ok), но все же это конкретный шаг который можно сделать за день-два

Лучший способ - получить больше информации об ошибке (я все время повторяюсь  Улыбающийся)

1. На счет взаимосвязи утечек и ошибки конечно же согласен, но в данном случае она есть. Каждый раз, находя утечку, я продвигаюсь. Программа работает дольше. Кроме того, без отладчика программа работает существенно дольше, чем под отладчиком. Очевидно. это связано с тем. что отладчик отъедает часть памяти.
2. К сожалению не знаю, как сделать проверку битого блока. Если посоветуете. буду весьма признателен.
3. Я так и не смог выйти в отладчике точно к месту падения. Оно меняется в зависимости от степени подробности отладки.
Записан
Ced
Гость
« Ответ #32 : Июнь 03, 2017, 09:02 »

Попробуйте лучше что-нибудь готовое, типа Dr. Memory, Visual Leak Detector и т.п.

С удовольствием. Вы первый, кто дал конкретные ссылки. С этого и начну.
Записан
Ced
Гость
« Ответ #33 : Июнь 03, 2017, 09:12 »

Попробуйте лучше что-нибудь готовое, типа Dr. Memory, Visual Leak Detector и т.п.

Одна проблема. По Вашим ссылкам лежат 64-разрядные приложения. Мне нужны 32-разрядные. Может посоветуете?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #34 : Июнь 03, 2017, 09:49 »

Просто не нужно плодить потоки и внимательно и аккуратно все делать... И тогда не будет никаких утечек и прочих нехороших вещей.

PS: Возьмите уже Linux и прогоните с Valgrind. 
Записан

ArchLinux x86_64 / Win10 64 bit
Ced
Гость
« Ответ #35 : Июнь 03, 2017, 10:03 »

Просто не нужно плодить потоки и внимательно и аккуратно все делать... И тогда не будет никаких утечек и прочих нехороших вещей.

PS: Возьмите уже Linux и прогоните с Valgrind. 

Потоками не страдаю. А про аккуратность знают все. От чего-то у всех периодически это не выходит:)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #36 : Июнь 03, 2017, 10:19 »

Еще совет - замени указатели на "умные" указатели (std::unique_ptr, std::shared_ptr)
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Ced
Гость
« Ответ #37 : Июнь 03, 2017, 12:52 »

Еще совет - замени указатели на "умные" указатели (std::unique_ptr, std::shared_ptr)

Допустим. И каков ожидаемый результат?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #38 : Июнь 03, 2017, 13:11 »

1. Уменьшает утечки памяти.
2. Не дает работать с указателями вникуда.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Ced
Гость
« Ответ #39 : Июнь 03, 2017, 13:22 »

1. Уменьшает утечки памяти.
2. Не дает работать с указателями вникуда.

а в чем разница между двумя вариантами?
Записан
Ced
Гость
« Ответ #40 : Июнь 05, 2017, 14:24 »

Подскажите пожалуйста, какова максимальная длина QByteArray для 32-битной операционки?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #41 : Июнь 05, 2017, 14:51 »

1. Уменьшает утечки памяти.
2. Не дает работать с указателями вникуда.

а в чем разница между двумя вариантами?
1 — просто утечка, 2 — потенциальный краш
Подскажите пожалуйста, какова максимальная длина QByteArray для 32-битной операционки?
INT_MAX, скорее всего 32767
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #42 : Июнь 05, 2017, 15:41 »

Подскажите пожалуйста, какова максимальная длина QByteArray для 32-битной операционки?
Под вендой упретесь в 2Гб.
Записан
Ced
Гость
« Ответ #43 : Июнь 05, 2017, 19:52 »

А такая операция допустима?

Код:
List<x *>  a;
List<x *>  b;
......

a = b

если a перед присвоением был пуст, b - не пуст.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #44 : Июнь 05, 2017, 20:47 »

Операция то допустима, вы получите второй список с указателями на те-же самые объекты x.
Вы потом как эти объекты освобождаете? Повторных освобождений не делаете?
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.