2°C
завтра: 2°C
Погода в Перми
2°C
ночью−5°C
утром−1°C
завтра2°C
Подробно
 92,26
−0.3291
Курс USD ЦБ РФна 29 марта
92,2628
−0.3291
 99,71
−0.5647
Курс EUR ЦБ РФна 29 марта
99,7057
−0.5647
PRM.Форум /Компьютеры Интернет Связь / Программирование /

Анализ чужого кода - кто как делает?

  • Достался мне тут по наследству небольшой проектик (~4500 строк). На С, если кому интересно.
    О проектике известно, что он работает, но в ряде случаев начинает глючить. Моя задача - поймать этот глюк.
    Документирована программа отвратительно - описания нет, комментариев очччень мало и они, в большинстве случаев, бесполезны.
    Прогнать тоже пока не на чем - платформа несколько отличается от PC:улыб:
    Поэтому на данный момент сижу, пытаюсь понять, что делает тот или иной кусок кода и откомментировать. И попутно у меня возникает вопрос - а нельзя ли этот процесс несколько облегчить? Нет ли инструментов, которые, проанализировав проект, вывели бы список вызовов, объявлений, определений и позволили бы быстро перемещаться по тексту от одного к другому? Нет ли каких-то общепринятых методик анализа?
    Посоветуйте чего-нибудь :).

    У вас такая красивая машина. Это Ферарри? - Не, это Фольксваген Поло.

  • Ну а вот у вас хотя бы система контроля версий есть? А насчет поймать глюк - берешь и ловишь, в чем проблема?:)

  • Understand for C++ scitools

  • В ответ на: Ну а вот у вас хотя бы система контроля версий есть?
    Откуда такое щастье?:улыб:
    В ответ на: А насчет поймать глюк - берешь и ловишь, в чем проблема?:)
    Ну я ж говорю, метод "запустил-посмотрел где глючит-подумал-поправил" мне не доступен по причине отсутсвия железяки, на которой ЭТО должно работать.

    У вас такая красивая машина. Это Ферарри? - Не, это Фольксваген Поло.

  • Не запуская код, сложно что-то отладить.
    Можно прогнать разные инструменты, которые проверят, насколько "правильно" написан код, и даже что-то исправить. Но как вы поймете, что вы исправили именно то, что нужно?

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

  • Бывает под камень фирма - производитель делает эмуляторы под ПС. Во всяком случае раньше видел подобное для какого-то микропроцессора...

    Основной принцип моего существования — служение гуманистическим идеалам человечества!

  • В ответ на: Не запуская код, сложно что-то отладить.
    +1. Темболее 4500 строчек все-таки.

  • Было верно подмечено про эмуляторы. Надо поискать эмулятор платформы, под которую написан проект и попробовать запустить на нем.

  • Блин. Всего-то 4500строк, да еще и на языке... Нифига не понимаю куды мы котимся... делов-то. Каких-то 50 страниц текста. Помнится в году так 94-м разобрал 400кбайт кода с ассемблера на язык "С"... вручную и "между делом" под отладчиком. Ну уж больно игрушка понравилась...

    И что стоит прогруммер, который телефонным тестом баг найти не могёт в таком малюсеньком куске... Фи. :death:

    "Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин:улыб:(а не на "вертикаль власти" надеяться)

  • О, какую тему вспомнили.
    Значит, рассказываю.
    Во-первых, проблема снялась сама по себе (не решилась, а снялась, да) - заказчик исчез в тумане.
    Во-вторых, прошу учесть, что проектик был - самопальная GSM-сигналка на Atmel'ке, и ловить плавающий глюк в симуляторе и без периферии - задача та еще.
    В-третьих, в заглавном посте темы вопрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования.

    PS: а кто такой телефонный тест? Гугл не знает.

    У вас такая красивая машина. Это Ферарри? - Не, это Фольксваген Поло.

  • Эээ, я бы не был столь категоричен. 4500 строк это конечно не много, но все зависит от конкретной решаемой задачи (может там какая-нибудь математика, тогда вообще ж. еще и понять нужно а правильно ли формулы составили и насколько их адекватно запрограммировали), насколько грамотно и читабельно запрограммировано и т.п.

    По теме: если ошибку не видно невооруженным взглядом, то можно сделать так: разобраться в коде и откомментировать его, при необходимости зарефакторить: сделать легко читаемым, модульным и т.п. Выделить железозависимый код в отдельные модули, для тестирования подменяя их заглушками (mocks). Написать тесты (смотри unit testing). Прогнать и посмотреть что получиться.

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

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

  • > опрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования

    IDE ?

  • Спасибо, конечно, но уже не актуально. Теме уже больше года ) Железки я так и не дождался, даже схему не дали, а потом и вообще скрылись в тумане. И черт с ними, честно говоря.:улыб:

    У вас такая красивая машина. Это Ферарри? - Не, это Фольксваген Поло.

  • Гм, я что-то не обратил внимания, сорри :смущ:

  • О, не посмотрел дату начала. А по-поводу каких-либо IDE на эту тему - помнится для "поскакаля" делали что-то в районе Севастопольского универа... году так 92... может чего и родилось за это время... типа автоматизированное преобразование (оптимизация кода) и тестирование (автопостроение тестов) на уровне языка... Тогда же было модное направление автопреобразователи С-Паскаль и наиборот...

    ИМХО, "ручками" оно как-то привычнее и быстрее получается. 2 окошка: в одно смотришь, в другом правишь...:миг:

    "Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин:улыб:(а не на "вертикаль власти" надеяться)

Записей на странице:

Перейти в форум

Модератор: