На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (5) 1 2 [3] 4 5  все  ( Перейти к последнему сообщению )  
> отладка приложения , отладчик он нужен или нет?
    Цитата Pavia @
    Логи очень хорошо помогают. Но умение ими правильно пользоваться сравни искусству. Уж больно мудрёная у них форма существования. Так как не понятно по каким событиям запускать логирование, а по каким молчать.

    И все таки логи порой просто могут отсутствовать, банально для повышения быстродействия. А логгировать каждую строчку кода - утопия и бессмысленное занятие. И тогда приходит на помощь отладчик. А если не помогли логи, брать и тупо все трейсить, вместо того чтоб посмотреть что происходит под отладчиком - ИМХО глупое занятие, за исключением крайних случаев, когда под отладкой бага не воспроизводится.
      Цитата Олег М @
      Ты нашёл ошибку не "своими методами", а исключительно потому, что разбил эту цепочку. Если бы ты запустил это под отладчиком, он бы сразу отловил исключение в нужной строке, безо всяких трассировок.
      Не нужно все выражения пихать в одну строку - тяжело как отлаживать, так и читать.

      да пробовал запускать но ничего не понял :D там всякие окошки у меня глаза разбежались :wacko:
      не умею я ими пользоваться, надо почитать литературу по работе с отладчиками.
        Цитата Painkiller @
        Как правильно подметили при отладке многопоточных приложений gdb пмомжет чуть менее чем никак ИМХО.
        Подметили неправильно. В умелых руках gdb позволяет выводить состояние всех потоков программы, дерево вызовов и локальные переменные каждого потока, так что очень даже сильно помогает отлавливать ошибки и в межпоточном взаимодействии в том числе.

        Добавлено
        Цитата KILLER @
        Значит ты привел самый бредовый пример, который только смог выдумать. Который написан через жопу, и в котором тебе не только дебаг, но еще и трейсы толком не помогут. Я даже не могу себе представить случай, когда нужно увеличивать размер exe во время его выполнения. Вирус чтоль какой то?
        Вы же сами предложили отключить оптимизацию по размеру и скорости. Или ваша оптимизация по размеру не влияет на размер? Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример:
        ExpandedWrap disabled
          for(int i = 0; i < 100000; ++i)
              ;
        любой вменяемый компилятор с включенной оптимизацией выкинет этот код, с выключенной - оставит. Пример вырожденный - в реальности там обычно не пустой цикл, а куча осмысленных (с точки зрения программиста) действий, в которых он забыл volatile и которые без оптимизации делают то, что хотел программист, а с включенной оптимизацией просто выкидываются.
          Цитата Dushevny @
          Вы же сами предложили отключить оптимизацию по размеру и скорости. Или ваша оптимизация по размеру не влияет на размер? Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример:

          Причем тут оптимизация по размеру? А если я еще подключу какую нибудь библиотеку сторонюю - у меня еще больше размер файла станет, это что - вот это имелось ввиду? :lol:
          А если я сделаю рефакторинг и половину ненужных классов выкину, у меня размер меньше станет, и тут бага появилась. Значит отладчик тут применить нельзя - ведь размер программы изменился, только трейсами отлаживать, так ведь? :lool:

          Цитата Dushevny @
          Изменяя настройки компилятора на время отладки вы отлаживаете другой код, не тот, который будет поставляться заказчику. Простейший пример:

          Можно и не трогать оптимизацию со скоростью, но тогда тебе не будут доступны значения переменных, просто будешь примерно находится в том месте, которое исполняется. Сама логика кода - что в релизе, что в дебаге одинаковая. И ошибки, которые воспроизводятся в релизе, и не воспроизводятся в дебаге - относятся к классу редких ошибок. Так что не нужно говорить что релиз и дебаг это две абсолютно разных программы. Разное в них только то, что оптимизировал компилятор, а то что написал ты - по сути одинаковое. И в любом вменяемом проекте, по крайней мере с которыми я работал всегда есть и релизные сборки, и дебажные. Не вижу проблем собирать две сборки и работать с той, которая тебе в данный момент нужнее.
          Сообщение отредактировано: KILLER -
            Цитата KILLER @
            Причем тут оптимизация по размеру?
            Чьи слова?
            Цитата KILLER @
            Можно еще оптимизацию и скорость отключить.


            Цитата KILLER @
            А если я еще подключу какую нибудь библиотеку сторонюю - у меня еще больше размер файла станет, это что - вот это имелось ввиду?
            Если библиотека не используется - она будет выкинута, размер не изменится.

            Цитата KILLER @
            А если я сделаю рефакторинг и половину ненужных классов выкину, у меня размер меньше станет, и тут бага появилась. Значит отладчик тут применить нельзя
            Какой-то поток сознания пошел.

            Цитата KILLER @
            но тогда тебе не будут доступны значения переменных

            Не тыкайте мне.

            Цитата KILLER @
            Не вижу проблем собирать две сборки и работать с той, которая тебе в данный момент нужнее.
            Не видите - собирайте.
            Сообщение отредактировано: Dushevny -
              Цитата Dushevny @
              Чьи слова?

              Посмотри на какой пост они были ответом. Там речь шла о дебаге в релизе.

              Цитата Dushevny @
              Если библиотека не используется - она будет выкинута, размер не изменится.

              А если используется, то дебагером мы уже не воспользуемся? Размер же программы изменился :whistle:

              Цитата Dushevny @
              Какой-то поток сознания пошел.

              Да нет, это похоже что ты не понимаешь к чему вообще относилось то, что ты решил процитировать.

              Цитата Dushevny @
              Не тыкайте мне.

              Не говори что мне делать и я не скажу куда тебе идти.

              Цитата Dushevny @
              Не видите - собирайте.

              Так зачем ты тогда в чужой спор лезешь, не зная о чем идет речь? У тебя в релизе и дебаге получаются две разные программы? Это твои личные проблемы. У меня нет с этим проблем.
                Цитата KILLER @
                У тебя в релизе и дебаге получаются две разные программы? Это твои личные проблемы.
                У вас они получаются побитно идентичные? Нет? Значит это разные программы. Даже если они (иногда) делают примерно одно и то же.

                Цитата KILLER @
                Так зачем ты тогда в чужой спор лезешь, не зная о чем идет речь?
                Это форум. Здесь каждый может принять участие. Но продолжать общаться с таким хамоватым собеседником желания нет. Пожалуйте в игнор.

                Цитата KILLER @
                У меня нет с этим проблем.
                Ваши проблемы тут мало кого интересуют.
                Сообщение отредактировано: Dushevny -
                  Цитата Dushevny @
                  У вас они получаются побитно идентичные? Нет? Значит это разные программы. Даже если они (иногда) делают примерно одно и то же.

                  Причем тут побитно идентичные? К чему это вообще? :wacko: С логической точки зрения, они идентичные. Ты написал программу, которая что то делает, она это будет делать и в релизе и в дебаге. А во что это транслирует компилятор - это вообще не твое дело.
                  И как это относится(в частности включение/отключение оптимизации) к этому высказыванию?
                  Цитата ЫукпШ @
                  А в проге баг, который проявляется при изменении размеров приложения
                  и при изменении расположения различных его частей в памяти...

                  Что за прога такая - что меняет свой размер? Каким образом меняется размер приложения? Часто ты в релизе отключаешь оптимизацию и толкаешь пользователям? Ты в лез в чужой спор, намолол чепухи, и теперь для тебя самое время слиться. Пока еще больше чепухи не намолол. Если я отключу оптимизацию, у меня как раз и изменится размер программы. Я смогу отлаживать программу в релизе и вычислить где баг. нет? Ну ну.


                  Цитата Dushevny @
                  Это форум. Здесь каждый может принять участие. Но продолжать общаться с таким хамоватым собеседником желания нет. Пожалуйте в игнор.

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

                  Цитата Dushevny @
                  Ваши проблемы тут мало кого интересуют.

                  Твои проблемы и подавно. :whistle:
                  Сообщение отредактировано: KILLER -
                    Цитата KILLER @
                    Что за прога такая - что меняет свой размер? Каким образом меняется размер приложения?

                    пардон по правде говоря я тоже не совсем понял про изменяемый размер проги, но молчал чтобы не показаться глупым :D

                    пробовал отловить тот же баг через F5 (режим отладки), но он так долго запускается (тяжелая штука отладчик), думаю ноут слабый.. :angry:
                    (напомню это Qt Creator 4.2, на Visual Studio 2010 все намного быстрее :D)
                    в итоге да он остановился на той строке с исключением, но честно говоря я сразу не понял что в ней не так :D

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

                    но опять же время тратиться и на написание юнит-тестов, не думаю что это бесполезное занятие ;)
                    да и рефакторинг кода тоже дополнительное время занимает, но все это как мне кажется отдельные части большого процесса разработки программы.
                    Сообщение отредактировано: Cfon -
                      Цитата Cfon @
                      пардон по правде говоря я тоже не совсем понял про изменяемый размер проги, но молчал чтобы не показаться глупым


                      Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода.
                      Т.е. программы скомпилированные в релизе и дебаге отличаются довольно сильно. Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых.


                      Цитата Cfon @
                      в итоге да он остановился на той строке с исключением, но честно говоря я сразу не понял что в ней не так


                      А по трассировке понял?
                        Цитата Олег М @
                        Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода.
                        Т.е. программы скомпилированные в релизе и дебаге отличаются довольно сильно. Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых.

                        а это имелось ввиду тогда все ясно ;)
                        Цитата Олег М @
                        А по трассировке понял?

                        нет не понял тоже :D , я имел ввиду что мои трейсы заменяли по сути отладчик, чтобы локализовать место исключения, что конечно же занимает определенное время, и как я писал выше, отладчик в этом плане экономит время.
                        но написание кода трассировки позволяет (для меня лично) еще раз изучить ход выполнения программы, что я думаю не будет лишним при отладке.
                        Сообщение отредактировано: Cfon -
                          Цитата Олег М @
                          Когда ты компилируешь в отладочном режиме, у тебя, во-первых, отключается оптимизация, во-вторых, добавляется макрос DEBUG, который, в свою очередь, добавляет хренову тучу кода.

                          А причем тут релиз и дебаг? В посте ЫукпШ'а об этом ничего не сказано и близко.
                            Цитата Cfon @
                            но написание кода трассировки позволяет (для меня лично) еще раз изучить ход выполнения программы, что я думаю не будет лишним при отладке.


                            В твоём случае гораздо полезнее было бы пошаговое прохождение по программе в отладчике. С заходами в процедуры, просмотром переменных, точками останова и т.д.
                              Цитата Олег М @
                              Соответственно ошибки могут не повторяться, либо там, либо там, кроме самых грубых.

                              Не знаю как там в книжках пишут. На практике в 95% если не в 99% случаев ошибка в релизе, воспроизводится и в дебаг конфигурации. В основном можно получить различное поведение на инициализации переменных. Потому что в дебаге, компилятор их может обнулять, в релизе нет.
                                Цитата KILLER @
                                Не знаю как там в книжках пишут. На практике в 95% если не в 99% случаев ошибка в релизе, воспроизводится и в дебаг конфигурации.


                                На практике 95% ошибок, можно и без отладчика найти, просто посмотрев код. А вот потоки, стек, память ведут себя в релизе и дебаге по-разному.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (5) 1 2 [3] 4 5  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0590 ]   [ 17 queries used ]   [ Generated: 28.03.24, 09:28 GMT ]