| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ваши методы разбора |
| Автор: Rickert 24.5.2007, 08:42 |
| Расскажите о том, как вы разбираете чужой исходный код. Может быть у кого есть интересные приёмы? Имеется ввиду разбор не программ типа hello world, а больших проектов. |
| Автор: W4FhLF 24.5.2007, 09:00 |
| Rickert, здесь подход стандартный. Я в качестве отладчика ring3 кода использую OllyDBG со своим набором плагинов, настроек и других особенностей(в том числе использую плагин для подключения сигнатур из ИДЫ). Ольга поддерживает отладочную информацию, так, что я её ещё использую и вместо стандартного отладчика MS VS. В качестве дизассемблера ессно ИДА, тут тебе и символы, и сигнатуры и отладочная инфа и вообще самый умный движок, короче не знаю, что тут описывать, де факто просто В качестве отладчика ring0 и драйверов раньше использовал WinDBG, реже SoftICE(ибо глючил, как только я с ним нен извращался), но WINDBG это конечно полный атас в плане юзабилити, что-то путём отладить надо сначала через задний проход подлезть. Сейчас обороты набирает другой отладчик- Syser Debugger. Ещё немного сыроват, я слежу за ним с версии 1.2, последняя 1.9, уже есть поддержка символов и многих других особенностей(http://sysersoft.com/products.htm), очень перспективная разработка, вся надежда на неё. |
| Автор: Rickert 24.5.2007, 09:06 |
| Я не про бинарник, а про исходник сам. |
| Автор: archimed7592 24.5.2007, 09:09 |
| W4FhLF, может я слепой, но речь, вроде про исходный код была Rickert, у больших проектов, как правило, есть какая-никакая документация... имхо, с неё начинать нужно... |
| Автор: W4FhLF 24.5.2007, 09:16 |
| Опа, палюсь |
| Автор: korbian 24.5.2007, 09:18 |
с интерфейсов, до низу. если нет документации на исходник, беру листочек, карандашек и рисую диаграммки. Оооочень редко, через Visio получаю class diagram. |
| Автор: Rickert 24.5.2007, 09:36 |
| Я стараюсь найти основную функцию, так скзать "корень" от которого всё идёт и потом, от него наинаю рассматривать каждую строку одну за другой, появляются функции различные, тут же, при встрече, рассматриваю их. Так сказать выращиваю логическое дерево связей у себя в голове. |
| Автор: dumb 24.5.2007, 10:49 |
| для разбора чужих исходников сначала пытаюсь найти "корень зла", то бишь того падонка(ов), который эту муть(редко... редко чужой код радует глаз) написал - при помощи подручных средств можно в сжатые сроки вытянуть из него(них) смысл написанного. в случае, если падонков многовато(team), то лучше отлавливать их по одному. если поиск закончился неудачей, то очень помогает методика "не накапливай в себе, выражайся крепче"... малозначительную помощь в этом неблагодарном занятии может оказать, например, doxygen. ps. это кофе вштырило... кстати, по поводу "головы": записывай, рисуй, узелки завязывай. иначе, в случае не маленького проекта и пары выходных с друзьями, придется заниматься такими "выращиваниями" каждый понедельник. |
| Автор: FiMa1 24.5.2007, 10:49 |
| А есть ли программы для разбора отдельных сложно-составных выражений в коде? В целом же, в большом проекте, не плохо использовать продукты Source Insight, JGrasp, отличное подспорье при разборе кода, имхо. Кроме того, на выручку приходят системы контроля версий ПО. |
| Автор: v_nikolaev 24.5.2007, 10:56 | ||
ага, помогают понять, кто такую-то муть туда-то добавил |
| Автор: betal 24.5.2007, 11:43 |
| методом втыка. Но все же надеюсь что код написан ясно и чисто.... |
| Автор: Rickert 24.5.2007, 12:24 |
| betal, наивный |
| Автор: Promitheus 24.5.2007, 13:58 |
| Если смысл написанного не тривиален, то сначала пытаюсь откомпилить. Если не компилится пытаюсь покопаться в настройках среды, если дело не в моей системе выкидываю исходник. Если же откомпилилась смотрю, что делает прога, хотя я примерно прдеставляю. Далее инициализации переменных при запуске окна, далее обработчики событий. Если тяжёлый случай, что пошаговая отладка с точками останова и наблюдение за содержимым переменных во время выполнения. |