LINUX.ORG.RU

Как отловить случайный баг в большом проекте qt ?

 , , ,


0

2

Как выловить случайный баг, который происходит случайным образом. Прогу запускают для опроса оборудования на 5-8 часов и в процессе опроса вылетает иногда. Не получается отловить где падает. Как поймать, можно ли поймать момент падения и получить stack trace ? Интересует как на винде это сделать.

Пересобрать с -g3 и запустить под gdb

LINUX-ORG-RU ★★★★★
()

попробуй переустановить видновс. или проверить память там

anonymous
()
Ответ на: комментарий от LINUX-ORG-RU

Drwatson под виндой у меня обычно выскакивал при сегфолтах (надо вижуалстудию). Было это, правда, лет 20 назад )

aol ★★★★★
()
Ответ на: комментарий от chenbr0

тестировщики не нужны дискас

Код должен быть самотестируемым /thread

:D

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от aol

Я вот недавно с кросскомпиляцией под винду разбирался, заметил что cygwin (который оказался для этого не нужен) имеет кучу пакетов и если мне память не изменяет там был gdb, только вот я не понял это особенный какой или что. Виды у меня нет поэтому не проверить. Ну разве что в вайне, но чую я это будет не то

LINUX-ORG-RU ★★★★★
()

Собери прогу с google breakpad, обработай падение, сохрани дамп, потом проанализируй.

Давно делал, деталей не помню, но помню, что там все в порядке с документацией

ncuxer
()

1. Address sanitizer.

2. Bisect пока не найдешь какой комит ломает. Но это скорее от безысходности.

Ой в шиндошс нету санитайзера. Пичалька. Тогда на винфак.

Там тебе расскажут как написать свой хэедлер, который позволит тебе получить дамп. И как конпилять с отладочной информацией.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)

Помнится, если падает и студия установлена, то появится диалог, который предложит начать отладку. Но это опционально как-то было. Ещё можно это почитать. Если сборка идёт с mingw, то там и gdb есть, под ним можно запускать попробовать.

xaizek ★★★★★
()

Лучший вариант - стать квалифицированным программистом и искать решение самостоятельно.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Чет у меня попка слишком пригорела, даже не поянил свою точку зрения.

Как работать с QSerialPort в потоке ?
Проблема с aircrack-ng
Как считать из файла набор строк с числами для сортировки этих строк по столбцу?
Как считать состояние переключателя в gl-ar300m-lite роутере ?
beaglebone как управлять с андроида
Как прошить eeprom на beaglebone ?
beaglebone kernel panic ошибка
Как настроить сеть на beaglebone
qt5 кросс-компиляция с поддержкой linuxfb

И я не удивлюсь, если этот человек найдет/имеет хорошую должность, а я, как полный даун, слишком уважаю себя, чтобы доказывать очередному невежественном заказчику, что я стою три миски риса, а не одну, потому что индус с хорошим портфолио лепит говно на «отстаньте от меня уже», которое потом глючит, не работает, и проблемы эти нужно было решать до написания проекта, а не после.

Давай так: с тебя $500, и мы поможем тебе найти проблему в твоей софтине.

byko3y ★★★★
()

https://blogs.msdn.microsoft.com/chaun/2013/11/12/steps-to-catch-a-simple-cra...

А вообще, если под Linux, просто запускаешь gdb, file затем run Оно работает работает, валится. Пишешь bt и видишь где. Отладочные символы должны быть подключены

Еще под Valgrind можно погонять, под AddressSanitizer

Иногда просто гонять бесполезно, нужно создавать запредельную тестовую нагрузку софту, или сделать «порт» для возможности закачать в софт тестовые воздействия, или лучше растащить некий критичный функционал на библиотеки или модули, и тестить его отдельно по полной

«Иногда вылетает» при запросах оборудования - значит код анализа ответов вы не отладили. Я бы ответы в лог писал + делал flush, и только потом анализ этих данных, и когда свалится - последняя запись покажет какие данные оно не переваривает, ошибка будет на поверхности

I-Love-Microsoft ★★★★★
()

Начать писать логи?

vtVitus ★★★★★
()

google breakpad (емнип, под маздаем оно тоже должно работать, но не могу гарантировать)

Iron_Bug ★★★★★
()

При падении вылезает диалог, сообщающий что программа упала и предлагающий ее закрыть, либо подключить отладчик. Можно подключить отладчик сразу, если на компе установлен хотя бы windbg, либо зайти в менеджер процессов и сохранить оттуда дамп.

annulen ★★★★★
()

Не получается отловить где падает.

отлавливай в креаторе или вручную в gdb

x905 ★★★★★
()
Ответ на: комментарий от annulen

Нет такого, просто ошибка runtime вылетает. Простой пример QByteArray взять элемент за пределом массива, будет такой же runtimer error вместо окна с предложением отладки.

user2132
() автор топика

Собрать отладочный билд и настроить postmortem debug на нужный отладчик.

Ещё под виндой можно корки делать, так же как на ляликсе, начни с google:win32 minidump.

pon4ik ★★★★★
()

В любом случае писать тесты. Если программа нормально разделена на модули, это не должно составить труда. Если нет — ССЗБ.

А под линуксом она вообще работает? Если да — собрать под линукс и прогнать под валгриндом. Как правило, косяки, чреватые падениями, кроссплатформенны, хотя бывают и исключения.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

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

user2132
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.