Visual C++ Debugger

Тема в разделе "LANGS.C", создана пользователем nerd, 1 июл 2010.

  1. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Сколько лет работаю с визуал студио, часто наталкиваюсь на невозможность отловить некоторые баги. Скомпилил сервис, запускаю под дебагером, дебажный билд - работает прекрасно, никаких нареканий. Компилю релиз - вылазят эксепшны там, где их никогда не было, но релизную версию не подебажишь особо, чтобы исправить баги. Как вы с этим боретесь? От чего такая разница в работе?
     
  2. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    НУ во первый настройки проекта.
    Во вторых ASSERT
    И одно из самых главных, что студия делает с переменными в дебаге? скомпилируйте и мод disassembly.

    Не которые детали
    Minidump + Settings -> generation assembly code (в лоб)
    Логи.
    SEH + C++ exception. И смотрите что за исключения.


    А вообще наверное надо читать ... ))
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    люди чужой код олькой дебажат, а вы студией с символами не можете %)
    ваш код кривой
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    чаще всего дело в памяти.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    вполне может быть из-за оптимизации...
     
  6. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Говорит же человек: работает много лет.
     
  7. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    Соглашусь с Rel - бывает отличие из-за оптимизации (в дебаге нет оптимизации, в релизе обычно включена).
    nerd
    - попробуйте в своем релизе отключить оптимизацию,скомпилить - проверить, будут ли эксепшены вылазить...
     
  8. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Дело в том что с руками такаяже проблема как и с ногами)) Заранее простите. неудержался)
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    ага, а толку никакого %)
    найти баг в своей проге - это не проблема.
    есть сорцы CRT\STL, есть хороший отладчик
    есть символы - можно дебажить хоть олькой
    можно вообще без отладчика - сделать логов

    вобщем это печально, что работая столько лет ТС не знает как найти баг.

    из за оптимизации ничего не бывает. бывает кривой код, который не соответствует тому что написано в стандарте или msdn.
     
  10. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    ТС скачайте книжку Bugslayer'а
    Роббинс Дж. - Отладка приложений для Microsoft .NET и Microsoft Windows (2004)(14 Mb).djvu
    прилично по отладчику студийному написано как сделать отладку удобной да и вообще по отладке много всего
     
  11. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Дело в том что случай не совсем тривиальный:
    1) Механизмом SEH в данном случае не удастся воспользоваться, отдельная тема. Если не найду простого решения, буду переделывать код чтобы можно было.
    2) Ошибки трудновоспроизводимые - сервер обслуживает реальных пользователей, сервис по нескольку дней стабильно работает прежде чем что-то выдать.

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

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Еще для меня остается загадкой, почему дебагер зачастую показывает значения, но 100% неверные.
     
  13. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Приаттачил Ollydbg - в стеке вызовов один мусор показывает.
     
  14. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Как правило, ошибки инициализации и выход за пределы массивов. В debug версии выделяемая память инициализируется принудительно, в release - там мусор. В результате, ошибка случайна и невоспроизводима.

    Тщательное логгирование критических участков кода должно помочь.

    Как пример, при невозможности отладки (территориально удаленный клиент), я использовал такой подход: специальный билд имел встроенную трассировку (включалась условной компияляцией) всех критических участков, запись велась в кольцевой буфер (~ 256 Kb), при крэше этот буфер сбрасывался в файл и отсылался по эл.почте.

    Простенький вьювер сортировал записи из этого файла и строил дерево вызовов (типично, несколько сотен до крэша) с указанием значений логгируемых переменных.

    Большинство проблем решались уже на первой итерации.
     
  15. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Если стартую изначально под OllyDbg - сервис сразу падает. Подгружаю символы, но олли всё равно не в силах сказать где и что случилось, предлагает под дизассемблером рыться. В стеке вызовов нет даже имени моего модуля почему-то, только адреса.
     
  16. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Не хочу обидеть чьих-то религиозных чувств, задумка-то хорошая, но реализован Олли еще более глючно чем дебагер от MS. Как отлько аттачу олли к сервису, сервис сразу перестает работать (хотя олли пишет Running), и сам олли подгружает процессор на 80%. Возможно из-за моих потуг по реализации SEH.
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    интересно, почему у многих людей не возникает проблем ни с олли, ни с виндбг, ни с отладчиком студии, а у вас возникают?)
     
  18. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    nerd
    Вы тщательное логирование сделали?
     
  19. nerd

    nerd New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    12
    Да, вставляю везде запись лога, другого выхода пока не видно.
     
  20. maybeZ3N

    maybeZ3N New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2010
    Сообщения:
    80
    А есть сопровождающий сиди для второго издания, а то я что-то найти не могу.... Интересно, почему не выложить исходники вместе с книгой? Звучит довольно разумно....