Отладка, Способы |
Здравствуйте, гость ( Вход | Регистрация )
Отладка, Способы |
barabaka |
17.11.2011, 1:50
Сообщение
#1
|
Студент Группа: Участник Сообщений: 40 Регистрация: 14.11.2011 Из: Санкт-Петербург Пользователь №: 2999 Спасибо сказали: 1 раз(а) Репутация: 2 |
Знаете ли вы какие-нибудь эффективные приёмы отладки для кода со множеством указателей и их массивами? Как узнать где именно свалилась программа, без пошаговой отладки? В коде туча указателей и массивов указателей
|
|
|
Алексей1153 |
17.11.2011, 6:28
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
1) убрать все точки останова
2) запустить на отладку -------------------- а ещё лучше проектировать код так, чтобы таких проблем не было |
|
|
ViGOur |
17.11.2011, 7:19
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как вариант ставить ассерты.
Но в основном только грамотное проектирование... |
|
|
Iron Bug |
17.11.2011, 9:52
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
intel'овские тулзы для отладки. они отлавливают подобную хрень только так.
ставятся и под никсы и под венду. только под венду типа платно (но есть торренты ) под линь можно качнуть Intel® Parallel Studio XE 2011 for Linux: http://software.intel.com/en-us/articles/n...tware-download/ ставится отдельным пакетом, там и компилятор icc, и средства отладки. запускает отладку в Eclipse(ставит его сам, от системы нужен только установленный пакет поддержки java JRE), позволяет профилировать процессы, искать утечки и многое другое. под венду искать Intel Parallel Studio в торрентах, с ключами. она интегрируется в студию очень удобно. удобный интерфейс, практически всё понятно без документации. P.S. тулзы не отменяют грамотное проектирование и использование умных указателей Сообщение отредактировал Iron Bug - 17.11.2011, 9:55 |
|
|
barabaka |
17.11.2011, 13:36
Сообщение
#5
|
Студент Группа: Участник Сообщений: 40 Регистрация: 14.11.2011 Из: Санкт-Петербург Пользователь №: 2999 Спасибо сказали: 1 раз(а) Репутация: 2 |
|
|
|
Iron Bug |
17.11.2011, 13:47
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
То,что написано в QT тоже можно отлаживать? если скомпилировать Qt с помощью icc. я так понимаю, что это вполне возможно. впрочем, gcc-шные библиотеки под линём совместимы по внешним вызовам с icc(только надо уточнять совместимость по версиям, она обычно чуть запаздывает от последних версий gcc), так что если не углубляться внутрь самих библиотек, то можно отлаживать только свой код без всяких дополнительных усилий. Сообщение отредактировал Iron Bug - 17.11.2011, 13:48 |
|
|
Влад |
17.11.2011, 14:31
Сообщение
#7
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Как узнать где именно свалилась программа, без пошаговой отладки? В коде туча указателей и массивов указателей Рефакторинг. Подозреваю, что там еще и указатели "голые", чисто сишные. Выбросить код с "тучей указателей и массивов указателей" в помойку и написать заново. Опыт показывает, что получится быстрее, чем все это хозяйство отлаживать, раз уж нет ясности, "где свалилась программа". А свалиться она может в любом месте, если хоть один указатель из этой тучи испорчен. Причем, место, "где свалилось", может ровно никак быть логически не связано с местом, "где портится" - просто стрельба по памяти... При другом запуске - свалится в другом месте. |
|
|
barabaka |
17.11.2011, 17:21
Сообщение
#8
|
Студент Группа: Участник Сообщений: 40 Регистрация: 14.11.2011 Из: Санкт-Петербург Пользователь №: 2999 Спасибо сказали: 1 раз(а) Репутация: 2 |
Выкинуть и переписать конечно здорово,но времени нет и надо отладить что есть
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 0:31 |