Форум программистов, компьютерный форум CyberForum.ru

Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе - C++

Восстановить пароль Регистрация
 
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 21:44     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #1
Работаю на php, там интуитивно вырабатывается такой подход отладки в стиле - вывести данные из этого участка и прекратить код (по желанию).

Ну то есть банально мы вставляем куда нужно, нечто:
PHP
1
2
3
4
//...много кода...
print $variable;
exit();
//...много кода...
конечно у меня там свои специальные функции, но наглядно это примерно так

Такой метод быстр, мы сохраняем и обновляем страницу, и за несколько минут можем вывести множество данных, понимая тем самым состояние программы в данный момент времени.
Я пока осваиваю С/C++ и мне стало интересно возможно реализовать такой подход?
В данном случае я конечно напишу свою маленькую "библиотеку", которая будет записывать данные в файл. Но возник вопрос со временем, так ли это будет шустро? Я слышал компиляции больших проектов занимает значительное время, но в тоже время видел как компилятор (gcc) повторно не создает объектные файлы (хотя это предположение интуитивно, могу ошибиться).

Суть вопрос в следующем, правда ли компиляторы создает объектные файлы которые повторно не компилируются если нет изменений&
И можно ли с помощью них достичь быстрой компиляции большого проекта (буду копаться в готовых опенсорс проектах, которые большие)? Или все же минутами мне приодеться ждать и мучатся чтобы получить данные нескольких переменных?


Или все это чушь, и нужно использовать пошаговый отладчик с ассемблером (чтобы я на данном этапе не хотел из-за нехватки времени и слабого знания английского)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 21:48     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #2
Цитата Сообщение от Evgeniyms Посмотреть сообщение
правда ли компиляторы создает объектные файлы которые повторно не компилируются если нет изменений.
Компилятор не отслеживает изменения в файлах. Если это нужно, то этим занимаются сторонние приложения. Например, make. Или среда разработки.
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 21:55  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Компилятор не отслеживает изменения в файлах. Если это нужно, то этим занимаются сторонние приложения. Например, make. Или среда разработки.
то есть каждый раз с нуля в таком случае?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 22:07     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #4
Цитата Сообщение от Evgeniyms Посмотреть сообщение
то есть каждый раз с нуля в таком случае?
почему?

Добавлено через 1 минуту
Цитата Сообщение от Evgeniyms Посмотреть сообщение
буду копаться в готовых опенсорс проектах
Ты что, думаешь, в готовых опенсорс проектах собирается не актоматизированной системой, а для каждого файла руками компилятор вызывать? Нет.
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 22:13  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #5
Цитата Сообщение от Vourhey Посмотреть сообщение
почему?

Добавлено через 1 минуту

Ты что, думаешь, в готовых опенсорс проектах собирается не актоматизированной системой, а для каждого файла руками компилятор вызывать? Нет.
Ну собственно я прошу объяснить как и что происходит, и достижим ли такой эффект как я описал выше (автоматически через IDE или вручную в макфайле править)?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 22:17     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #6
Цитата Сообщение от Evgeniyms Посмотреть сообщение
как и что происходит
Как и что происходит ты прочитаешь в документации к соответствующей тулзе, которую собираешься использовать для автоматизации сборки проекта.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
и достижим ли такой эффект
Цитата Сообщение от Vourhey Посмотреть сообщение
Если это нужно, то этим занимаются сторонние приложения. Например, make. Или среда разработки.
Соответственно, уже ответил, что да, достижим.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
автоматически через IDE или вручную в макфайле править
В makefile это тоже автоматически, там не надо прописывать "проверь, что это файл не был изменен...".
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 22:22  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Как и что происходит ты прочитаешь в документации к соответствующей тулзе, которую собираешься использовать для автоматизации сборки проекта.


Соответственно, уже ответил, что да, достижим.

В makefile это тоже автоматически, там не надо прописывать "проверь, что это файл не был изменен...".
Значит компилятор нечего не делает, но некоторые IDE автоматические создают макфайл, в котором указывает, что компилировать, а что взять готовым (то есть IDE и проверяет файлы на изменения)?

Если так, нельзя было сразу так подробно объяснить, а то как кота за яйца тянем?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 22:29     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #8
Цитата Сообщение от Evgeniyms Посмотреть сообщение
Значит компилятор нечего не делает,
Он называется компилятор. Он компилирует, а не "ничего не делает.". Ничего больше он делать и не должен.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
но некоторые IDE автоматические создают макфайл
Да.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
в котором указывает, что компилировать, а что взять готовым
Нет. В мейкфале указываются таргеты, зависимости и сорцы. Если сорец таргета был изменен - перекомпилять надо. Если сорец не был изменен, можно брать готовый таргет. И так для всего дерева зависимостей.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
Если так, нельзя было сразу так подробно объяснить, а то как кота за яйца тянем?

Не по теме:

Если тебя что-то беспокоит, то обратись к своему врачу. Я отвечаю так, как мне нравится. Не хочешь - не читай.



Добавлено через 2 минуты
Для простоты представь, что таргет, в общем, случае, это объектный файл, а сорец - его код. Если исходный код был изменен, то надо пересобрать из него объектник. Если искходный код изменен не был, то можно брать объектник, что был уже собран сразу для линковки.

Добавлено через 38 секунд
Само собой, если таргет еще не был собран, то компиляция нужна обязательно.
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 22:36  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Он называется компилятор. Он компилирует, а не "ничего не делает.". Ничего больше он делать и не должен.

Да.

Нет. В мейкфале указываются таргеты, зависимости и сорцы. Если сорец таргета был изменен - перекомпилять надо. Если сорец не был изменен, можно брать готовый таргет. И так для всего дерева зависимостей.

Не по теме:

Если тебя что-то беспокоит, то обратись к своему врачу. Я отвечаю так, как мне нравится. Не хочешь - не читай.



Добавлено через 2 минуты
Для простоты представь, что таргет, в общем, случае, это объектный файл, а сорец - его код. Если исходный код был изменен, то надо пересобрать из него объектник. Если искходный код изменен не был, то можно брать объектник, что был уже собран сразу для линковки.

Добавлено через 38 секунд
Само собой, если таргет еще не был собран, то компиляция нужна обязательно.
А кто следит за изменениями, IDE? Как бы больше некому то и следить, или там какой-то универсальный алгоритм сравнения, где можно определить, что было внесено изменение в исходник?

Еще вопрос тогда. Насколько быстро будет сборка этих объектных файлов (линковка - насколько я помню), если все объектные файлы (таргеты) готовы? То есть быстро он соберет большой проект?
Под быстротой я имею ввиду секунд 10-20, или ждать все равно до нескольких минут? (субъективно по вашему опыту).
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 22:46     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #10
Цитата Сообщение от Evgeniyms Посмотреть сообщение
А кто следит за изменениями
Это зависит от того, что ты используешь. В случае с make-файлом - make. если твоя IDE использует мейк-файлы, то, что удивительно, то за изменениями следит опять же мейк, потому что для сборки его иде и запускает.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
Как бы больше некому то и следить
Блин. Ну IDE - это же целые комплекс утилит, а не одна большая программа. Там может быть отдельно компилятор, отдельно утилита линковки, сборки, отдельным компонентов редактор. И ничто не мешает вызвать все эти утилиты без IDE, и все будет также работать. Так надо ли тут толочь говно в ступе, IDE-не IDE?
Цитата Сообщение от Evgeniyms Посмотреть сообщение
там какой-то универсальный алгоритм сравнения, где можно определить, что была внесено изменение?
За все алгоритмы отвечать не могу, а так, обычная чексумма файла.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
Насколько быстро будет сборка этих объектных файлов (линковка - насколько я помню), если все объектные файлы (таргеты) готовы?
Он не будет собирать в этом случае, а просто скажет, что сборка нафиг не нужна.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
То есть быстро он соберет большой проект.
Быстро - понятие относительное. "Большой" - тоже. Ты можешь скачать любой архив исходного кода и собрать. Потом поменять главный что-нибудь и пересобрать.
Цитата Сообщение от Evgeniyms Посмотреть сообщение
или ждать все равно до нескольких минут?
Не, быстрее.

Может, тебе взять и прочитать доукментацию по make? А то столько вопросов, на которые все ответы уже давно есть. Почему ты ничего не читаешь? У тебя наводок уже туева хуча.
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 22:53  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #11
Vourhey, в данном случае хотел услышать из вашего опыта про размер и время. Скажем вы в какой-то большой проект добавили только одну строку и снова скомпилировали.
Насколько это быстро и удобно будет, чисто субъективно точно мне не нужно (уж бы сам проверил, но разворачивать мне долго, легче спросить).
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 23:05     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #12
Цитата Сообщение от Evgeniyms Посмотреть сообщение
в данном случае хотел услышать из вашего опыта про размер и время.
Чисто субъективно, достаточно быстро и удобно.
Evgeniyms
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 8
02.12.2012, 23:15  [ТС]     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #13
Цитата Сообщение от Vourhey Посмотреть сообщение
Чисто субъективно, достаточно быстро и удобно.
А что вообще удобнее (или правильне), так чисто вывести результат или же использовать отладчики, там же всякие точки остановки кода и информация о стеках?

Просто для скриптов такой подход (просто вывести переменную/массив) наверно самый достаточный, хоть и есть расширения и отладчики, но по сути не сталкивался с тем, что они явно нужны и облегчали жизнь, а здесь новая для меня среда и как поступить не понятно (просто выводить, или уже погружаться глубоко в отладку и ассемблер).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 23:32     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе
Еще ссылки по теме:

C++ Класс для работы со скалярным типом данных в стиле языка Перл
Первый язык программирования на подходе к С++: Паскаль или С? C++
C++ Почему так(комбинации бинарных и не бинарных вводов и выводов)?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.12.2012, 23:32     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе #14
Цитата Сообщение от Evgeniyms Посмотреть сообщение
А что вообще удобнее (или правильне), так чисто вывести результат или же использовать отладчики, там же всякие точки остановки кода и информация о стеках?
Так это от задачи зависит. В каких-то ситуациях удобнее решать задачу, используя отладчик. Где-то - ведя лог.

Добавлено через 1 минуту
Цитата Сообщение от Evgeniyms Посмотреть сообщение
Просто для скриптов такой подход (просто вывести переменную/массив) наверно самый достаточный, хоть и есть расширения и отладчики, но по сути не сталкивался с тем, что они явно нужны и облегчали жизнь, а здесь новая для меня среда и как поступить не понятно (просто выводить, или уже погружаться глубоко в отладку и ассемблер).
Поступать нужно так, как ты считаешь удобнее для текущей задачи. Я так же пользуюсь отладкой методом печати, как и используя отладчик. Просто смотрю, что удобнее.

Добавлено через 13 минут
Вот тебе практический пример. Время сборки проекта целиком:
Код
2m12.474s
И время сборки после того, как поменяли один сорец:
Код
0m2.426s
Yandex
Объявления
02.12.2012, 23:32     Отладка в стиле быстрых выводов данных и скорость компиляции в таком подходе
Ответ Создать тему
Опции темы

Текущее время: 13:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru