Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.17.20] |
|
Страницы: (5) 1 2 [3] 4 5 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Цитата Pavia @ Логи очень хорошо помогают. Но умение ими правильно пользоваться сравни искусству. Уж больно мудрёная у них форма существования. Так как не понятно по каким событиям запускать логирование, а по каким молчать. И все таки логи порой просто могут отсутствовать, банально для повышения быстродействия. А логгировать каждую строчку кода - утопия и бессмысленное занятие. И тогда приходит на помощь отладчик. А если не помогли логи, брать и тупо все трейсить, вместо того чтоб посмотреть что происходит под отладчиком - ИМХО глупое занятие, за исключением крайних случаев, когда под отладкой бага не воспроизводится. |
Сообщ.
#32
,
|
|
|
Цитата Олег М @ Ты нашёл ошибку не "своими методами", а исключительно потому, что разбил эту цепочку. Если бы ты запустил это под отладчиком, он бы сразу отловил исключение в нужной строке, безо всяких трассировок. Не нужно все выражения пихать в одну строку - тяжело как отлаживать, так и читать. да пробовал запускать но ничего не понял там всякие окошки у меня глаза разбежались не умею я ими пользоваться, надо почитать литературу по работе с отладчиками. |
Сообщ.
#33
,
|
|
|
Цитата Painkiller @ Подметили неправильно. В умелых руках gdb позволяет выводить состояние всех потоков программы, дерево вызовов и локальные переменные каждого потока, так что очень даже сильно помогает отлавливать ошибки и в межпоточном взаимодействии в том числе. Как правильно подметили при отладке многопоточных приложений gdb пмомжет чуть менее чем никак ИМХО. Добавлено Цитата KILLER @ Вы же сами предложили отключить оптимизацию по размеру и скорости. Или ваша оптимизация по размеру не влияет на размер? Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример:Значит ты привел самый бредовый пример, который только смог выдумать. Который написан через жопу, и в котором тебе не только дебаг, но еще и трейсы толком не помогут. Я даже не могу себе представить случай, когда нужно увеличивать размер exe во время его выполнения. Вирус чтоль какой то? for(int i = 0; i < 100000; ++i) ; |
Сообщ.
#34
,
|
|
|
Цитата Dushevny @ Вы же сами предложили отключить оптимизацию по размеру и скорости. Или ваша оптимизация по размеру не влияет на размер? Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример: Причем тут оптимизация по размеру? А если я еще подключу какую нибудь библиотеку сторонюю - у меня еще больше размер файла станет, это что - вот это имелось ввиду? А если я сделаю рефакторинг и половину ненужных классов выкину, у меня размер меньше станет, и тут бага появилась. Значит отладчик тут применить нельзя - ведь размер программы изменился, только трейсами отлаживать, так ведь? Цитата Dushevny @ Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример: Можно и не трогать оптимизацию со скоростью, но тогда тебе не будут доступны значения переменных, просто будешь примерно находится в том месте, которое исполняется. Сама логика кода - что в релизе, что в дебаге одинаковая. И ошибки, которые воспроизводятся в релизе, и не воспроизводятся в дебаге - относятся к классу редких ошибок. Так что не нужно говорить что релиз и дебаг это две абсолютно разных программы. Разное в них только то, что оптимизировал компилятор, а то что написал ты - по сути одинаковое. И в любом вменяемом проекте, по крайней мере с которыми я работал всегда есть и релизные сборки, и дебажные. Не вижу проблем собирать две сборки и работать с той, которая тебе в данный момент нужнее. |
Сообщ.
#35
,
|
|
|
Цитата KILLER @ Чьи слова?Причем тут оптимизация по размеру? Цитата KILLER @ Если библиотека не используется - она будет выкинута, размер не изменится.А если я еще подключу какую нибудь библиотеку сторонюю - у меня еще больше размер файла станет, это что - вот это имелось ввиду? Цитата KILLER @ Какой-то поток сознания пошел.А если я сделаю рефакторинг и половину ненужных классов выкину, у меня размер меньше станет, и тут бага появилась. Значит отладчик тут применить нельзя Цитата KILLER @ но тогда тебе не будут доступны значения переменных Не тыкайте мне. Цитата KILLER @ Не видите - собирайте. Не вижу проблем собирать две сборки и работать с той, которая тебе в данный момент нужнее. |
Сообщ.
#36
,
|
|
|
Цитата Dushevny @ Чьи слова? Посмотри на какой пост они были ответом. Там речь шла о дебаге в релизе. Цитата Dushevny @ Если библиотека не используется - она будет выкинута, размер не изменится. А если используется, то дебагером мы уже не воспользуемся? Размер же программы изменился Цитата Dushevny @ Какой-то поток сознания пошел. Да нет, это похоже что ты не понимаешь к чему вообще относилось то, что ты решил процитировать. Цитата Dushevny @ Не тыкайте мне. Не говори что мне делать и я не скажу куда тебе идти. Цитата Dushevny @ Не видите - собирайте. Так зачем ты тогда в чужой спор лезешь, не зная о чем идет речь? У тебя в релизе и дебаге получаются две разные программы? Это твои личные проблемы. У меня нет с этим проблем. |
Сообщ.
#37
,
|
|
|
Цитата KILLER @ У вас они получаются побитно идентичные? Нет? Значит это разные программы. Даже если они (иногда) делают примерно одно и то же. У тебя в релизе и дебаге получаются две разные программы? Это твои личные проблемы. Цитата KILLER @ Это форум. Здесь каждый может принять участие. Но продолжать общаться с таким хамоватым собеседником желания нет. Пожалуйте в игнор.Так зачем ты тогда в чужой спор лезешь, не зная о чем идет речь? Цитата KILLER @ Ваши проблемы тут мало кого интересуют. У меня нет с этим проблем. |
Сообщ.
#38
,
|
|
|
Цитата Dushevny @ У вас они получаются побитно идентичные? Нет? Значит это разные программы. Даже если они (иногда) делают примерно одно и то же. Причем тут побитно идентичные? К чему это вообще? С логической точки зрения, они идентичные. Ты написал программу, которая что то делает, она это будет делать и в релизе и в дебаге. А во что это транслирует компилятор - это вообще не твое дело. И как это относится(в частности включение/отключение оптимизации) к этому высказыванию? Цитата ЫукпШ @ А в проге баг, который проявляется при изменении размеров приложения и при изменении расположения различных его частей в памяти... Что за прога такая - что меняет свой размер? Каким образом меняется размер приложения? Часто ты в релизе отключаешь оптимизацию и толкаешь пользователям? Ты в лез в чужой спор, намолол чепухи, и теперь для тебя самое время слиться. Пока еще больше чепухи не намолол. Если я отключу оптимизацию, у меня как раз и изменится размер программы. Я смогу отлаживать программу в релизе и вычислить где баг. нет? Ну ну. Цитата Dushevny @ Это форум. Здесь каждый может принять участие. Но продолжать общаться с таким хамоватым собеседником желания нет. Пожалуйте в игнор. Во первых ты влез даже не разобравшись о чем идет спор. Во вторых - ты начал писать какую то муть, которая не имеет к теме раговора никакого отношения. Так что да, можешь идти в игнор. Цитата Dushevny @ Ваши проблемы тут мало кого интересуют. Твои проблемы и подавно. |
Сообщ.
#39
,
|
|
|
Цитата KILLER @ Что за прога такая - что меняет свой размер? Каким образом меняется размер приложения? пардон по правде говоря я тоже не совсем понял про изменяемый размер проги, но молчал чтобы не показаться глупым пробовал отловить тот же баг через F5 (режим отладки), но он так долго запускается (тяжелая штука отладчик), думаю ноут слабый.. (напомню это Qt Creator 4.2, на Visual Studio 2010 все намного быстрее ) в итоге да он остановился на той строке с исключением, но честно говоря я сразу не понял что в ней не так в пользу отладчика на данный момент скажу что да он сразу показал проблемную строку кода, это ускоряет выявление бага. без отладчика мне пришлось дополнительно писать код трассировки + искать строки кода где есть шанс получить неверный указатель и вставлять ассерты, что конечно же увеличивает время поиска бага. но опять же время тратиться и на написание юнит-тестов, не думаю что это бесполезное занятие да и рефакторинг кода тоже дополнительное время занимает, но все это как мне кажется отдельные части большого процесса разработки программы. |
Сообщ.
#40
,
|
|
|
Цитата Cfon @ пардон по правде говоря я тоже не совсем понял про изменяемый размер проги, но молчал чтобы не показаться глупым Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода. Т.е. программы скомпилированные в релизе и дебаге отличаются довольно сильно. Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых. Цитата Cfon @ в итоге да он остановился на той строке с исключением, но честно говоря я сразу не понял что в ней не так А по трассировке понял? |
Сообщ.
#41
,
|
|
|
Цитата Олег М @ Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода. Т.е. программы скомпилированные в релизе и дебаге отличаются довольно сильно. Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых. а это имелось ввиду тогда все ясно Цитата Олег М @ А по трассировке понял? нет не понял тоже , я имел ввиду что мои трейсы заменяли по сути отладчик, чтобы локализовать место исключения, что конечно же занимает определенное время, и как я писал выше, отладчик в этом плане экономит время. но написание кода трассировки позволяет (для меня лично) еще раз изучить ход выполнения программы, что я думаю не будет лишним при отладке. |
Сообщ.
#42
,
|
|
|
Цитата Олег М @ Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода. А причем тут релиз и дебаг? В посте ЫукпШ'а об этом ничего не сказано и близко. |
Сообщ.
#43
,
|
|
|
Цитата Cfon @ но написание кода трассировки позволяет (для меня лично) еще раз изучить ход выполнения программы, что я думаю не будет лишним при отладке. В твоём случае гораздо полезнее было бы пошаговое прохождение по программе в отладчике. С заходами в процедуры, просмотром переменных, точками останова и т.д. |
Сообщ.
#44
,
|
|
|
Цитата Олег М @ Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых. Не знаю как там в книжках пишут. На практике в 95% если не в 99% случаев ошибка в релизе, воспроизводится и в дебаг конфигурации. В основном можно получить различное поведение на инициализации переменных. Потому что в дебаге, компилятор их может обнулять, в релизе нет. |
Сообщ.
#45
,
|
|
|
Цитата KILLER @ Не знаю как там в книжках пишут. На практике в 95% если не в 99% случаев ошибка в релизе, воспроизводится и в дебаг конфигурации. На практике 95% ошибок, можно и без отладчика найти, просто посмотрев код. А вот потоки, стек, память ведут себя в релизе и дебаге по-разному. |