![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Расскажите о том, как вы разбираете чужой исходный код. Может быть у кого есть интересные приёмы?
Имеется ввиду разбор не программ типа hello world, а больших проектов. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Rickert, здесь подход стандартный.
Я в качестве отладчика ring3 кода использую OllyDBG со своим набором плагинов, настроек и других особенностей(в том числе использую плагин для подключения сигнатур из ИДЫ). Ольга поддерживает отладочную информацию, так, что я её ещё использую и вместо стандартного отладчика MS VS. В качестве дизассемблера ессно ИДА, тут тебе и символы, и сигнатуры и отладочная инфа и вообще самый умный движок, короче не знаю, что тут описывать, де факто просто В качестве отладчика ring0 и драйверов раньше использовал WinDBG, реже SoftICE(ибо глючил, как только я с ним нен извращался), но WINDBG это конечно полный атас в плане юзабилити, что-то путём отладить надо сначала через задний проход подлезть. Сейчас обороты набирает другой отладчик- Syser Debugger. Ещё немного сыроват, я слежу за ним с версии 1.2, последняя 1.9, уже есть поддержка символов и многих других особенностей(http://sysersoft.com/products.htm), очень перспективная разработка, вся надежда на неё. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Я не про бинарник, а про исходник сам.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
W4FhLF, может я слепой, но речь, вроде про исходный код была
Rickert, у больших проектов, как правило, есть какая-никакая документация... имхо, с неё начинать нужно... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Опа, палюсь
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 2 Всего: 14 |
с интерфейсов, до низу. если нет документации на исходник, беру листочек, карандашек и рисую диаграммки. Оооочень редко, через Visio получаю class diagram. -------------------- korbian © |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Я стараюсь найти основную функцию, так скзать "корень" от которого всё идёт и потом, от него наинаю рассматривать каждую строку одну за другой, появляются функции различные, тут же, при встрече, рассматриваю их. Так сказать выращиваю логическое дерево связей у себя в голове.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
для разбора чужих исходников сначала пытаюсь найти "корень зла", то бишь того падонка(ов), который эту муть(редко... редко чужой код радует глаз) написал - при помощи подручных средств можно в сжатые сроки вытянуть из него(них) смысл написанного. в случае, если падонков многовато(team), то лучше отлавливать их по одному. если поиск закончился неудачей, то очень помогает методика "не накапливай в себе, выражайся крепче"...
малозначительную помощь в этом неблагодарном занятии может оказать, например, doxygen. ps. это кофе вштырило... кстати, по поводу "головы": записывай, рисуй, узелки завязывай. иначе, в случае не маленького проекта и пары выходных с друзьями, придется заниматься такими "выращиваниями" каждый понедельник. |
|||
|
||||
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
А есть ли программы для разбора отдельных сложно-составных выражений в коде?
В целом же, в большом проекте, не плохо использовать продукты Source Insight, JGrasp, отличное подспорье при разборе кода, имхо. Кроме того, на выручку приходят системы контроля версий ПО. Это сообщение отредактировал(а) FiMa1 - 24.5.2007, 10:52 |
|||
|
||||
| v_nikolaev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
ага, помогают понять, кто такую-то муть туда-то добавил |
|||
|
||||
| betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
методом втыка.
Но все же надеюсь что код написан ясно и чисто.... --------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
betal, наивный
Это сообщение отредактировал(а) Rickert - 24.5.2007, 12:25 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: 1 Всего: 1 |
Если смысл написанного не тривиален, то сначала пытаюсь откомпилить. Если не компилится пытаюсь покопаться в настройках среды, если дело не в моей системе выкидываю исходник. Если же откомпилилась смотрю, что делает прога, хотя я примерно прдеставляю. Далее инициализации переменных при запуске окна, далее обработчики событий. Если тяжёлый случай, что пошаговая отладка с точками останова и наблюдение за содержимым переменных во время выполнения.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |