powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Research Studio .NET
25 сообщений из 128, страница 4 из 6
Research Studio .NET
    #36854519
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio, документ "Research Studio .NET", страница 4
Во-первых, добавление логирующего кода, должно было быть полностью автоматизировано и скрыто за обычным процессом компиляции.

Во-вторых, отладочный код должен был быть невидим. Программист только видит основной рабочий код.

В-третьих, логироваться должно абсолютно все.

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

Что-то здесь не то. Общие принципы логгирования акцентируют внимание только на значимом коде. Попытка логгировать всё - это моделирование вселенной в состояниях. Это забавный предмет для философской дискуссии. Но в рамках отладки или профилирования кода программист довольствуется логгированием критически важных секций обработки ошибок. Это не просто признак хоршего тона. Это рационально с точки зрения ресурсов. Если вы попытаетесь логировать "всё" то для хорошего выч-метода получите "простыню" ненужной информации (несколько гигабайт или терабайт) которую непонятно ГДЕ хранить и КАК и самое главное ЗАЧЕМ?
...
Рейтинг: 0 / 0
Research Studio .NET
    #36862242
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-то заснул похоже после первого абзаца

в каталагизаторе я тоже получил гигабайты, терабайты информации залогировав весь граф его работы ?

Пока вы думаете ответ: 94кб в xml.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36862319
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще не качал и не ставил твой софт. А можно взглянуть только на этот 94-килобайтный xml ?
...
Рейтинг: 0 / 0
Research Studio .NET
    #36862326
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Research Studio .NET
    #36862335
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ччёрт... что-же это ты indent не включил.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36862344
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле ?
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863011
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как ты будешь логировать мультипоточный код?
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863118
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я нигде не декларировал что собираюсь логировать мультипоточный код
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть твоя система идеологически не приемлет отладку мультипоточного кода?
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863136
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioя нигде не декларировал что собираюсь логировать мультипоточный код

вах
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863137
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТоесть твоя система идеологически не приемлет отладку мультипоточного кода?

приемлет, но я еще не реализовывал. И пока даже не впланах
...
Рейтинг: 0 / 0
Research Studio .NET
    #36863189
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстате чисто технически это совсем не сложно,
куда сложнее продумать интерфейс. В обычной студии когда брекпоинты прыгают с одного потока в другой это вообще паршиво выглядит. Нету хорошей иллюстрации паралельной обработки в МС студии.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36866491
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файлик прочитал. идея интересная

по поводу 100% "воспроизводимости" бага имеются сомнения следующего характера.

1) Приложение работает с БД. Вызывает хранимую процедуру, параметры вызова которой RS успешно залогировал. Но внутри процедуры происходят различные SELECT или DML операции с данными. На базе тестировщика данные одни, на базе девелопера - другие. Вы никак не сможете гарантировать 100% идентичность. Даже с одной базой.

2)
авторПреимущества взаимодействий на отчетах также снимает проблему версионности. Отчет будет всегда содержать только актуальные исходные коды программы, только те исходные коды, на основе которых было скомпилировано приложения.

А как вы будете восстанавливать исходные коды хранимых объектов СУБД? Динамически патч накатывать? При этом надо запомнить текущее состояние схемы и после прогонки отчёта восстановить его. Это очень не тривиальная задача. Не говоря уже о том, что после такой накатки на схеме могут быть битые объекты...разработка идёт вперёд, а тестеры тестят чуть с опозданием. От фазы к фазе разработчики БД инкрементно накатывают патчи на схему тестеров, чтобы они могли тестить последние разработки.


Т.е. 100% воспроизводимость мне видится только в свете копии клиентского кода. Но никак не работы с БД.


з.ы. и орфографию всё таки прогоните в ворде по F7. При виде таких ошибок вся "солидность" сразу испаряется. И отношение формируется соответствующее
...
Рейтинг: 0 / 0
Research Studio .NET
    #36866570
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio, документ "Research Studio .NET"...Сегодня Research Studio .NET – это свободный проект с открытым исходным кодом на этапе прототипа, который разрабатывается как альтернатива существующим средам разработки в формате «Разработчики для разработчиков» отечественными программистами. Если Вы знакомы с Microsoft Visual Studio то для вас знакомство с новой средой разработки будет наиболее простым....

Мне кажется сегодня нет смысла разрабатывать альтернативу MSVS.Net. Её создаёт корпорация и о конкурентоспособных возможностях говорить безсмысленно. Вы будете заведомо в проигрыше. А вот создать плагин или модуль для MSVS или Eclipse или NetBeans который-бы воплощал функционал отладки - вполне вам по силам.

rstudio, документ "Research Studio .NET"....Основным новшеством является технология Late Debugging, которая принципиально отличается от классической отладки. Суть ее заключается в том, что отладка программы не происходит во время ее выполнения. Во время выполнения только записывается подробный отчет о работе программы. Этот отчет является по сути новым форматом документа с расширением rsr и позволяет мгновенно восстановить отладку без запущенного приложения на любом компьютере где установлена Research Studio .NET...
Если гуглить по всемирному индексу документов то поиск Late+Debugging не даёт ничего релевантного. Ниже вы пытаетесь в двух словах объяснить что это такое. Этого недостаточно. Нельзя анонсировать целую технологию и при этом упомянуть о ней "всколзь". Это пренебрежение к читателю. Складывается впечатление будто вы говорите о вещах общеизвестных а на самом деле это совсем не так. Вы должны как минимум отдельную статью посвятить теоретическому описанию. Вы должны описать условия, предпосылки, необходимость, процесс поисков, найденные варианты, выбор лучшего варианта, теоретическое доказательство того что это работает, серию экспериментов и т.д.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36867645
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolkaфайлик прочитал. идея интересная

по поводу 100% "воспроизводимости" бага имеются сомнения следующего характера.

1) Приложение работает с БД. Вызывает хранимую процедуру, параметры вызова которой RS успешно залогировал. Но внутри процедуры происходят различные SELECT или DML операции с данными. На базе тестировщика данные одни, на базе девелопера - другие. Вы никак не сможете гарантировать 100% идентичность. Даже с одной базой.


Да именно так и есть. Отчет не содержит данные из таблиц и любые другие обьекты Базы Данных.
Он "запоминает" только
а) текст хранимых процедур которые принимали участие в выполнении
б) Цепочку выполненных строк в хранимых процедурах
в) Значение переменных которые проскакивали при выполнении.

Ну и если запрос "вытягивает" какие-то данные на клиент, это можно просмотреть уже в Дот Нет коде в SqlDataReader.


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

А как вы будете восстанавливать исходные коды хранимых объектов СУБД? Динамически патч накатывать?


Отчет содержит только тот рантайм граф программы который принимал участие в выполнении/воспроизвидении бага. Он не содержит все исходники программы, все тексты хранимых процедур тригеров и так далее. Только то, что выполнялось.

Tolka
При этом надо запомнить текущее состояние схемы и после прогонки отчёта восстановить его.


Он не восстанавливает, он всего лишь эмулирует работу на машине тестера. Плюс здесь в том, что чтобы открыть отчет и восстановить работу программы с багом не нужно ничего настраивать. Тоесть для дебага хранимых процедур ( опять же в рамках выполнения ) не нужно усстанавливать сервер бд, разворачивать базу и так далее. Минус, здесь в том, что некоторые баги могут быть "вне". Тоесть чтобы их выявить нужно проссматривать не те обьекты, строчки кода, переменные которые были затронуты при выполнении, а другие обьекты, которые не были залогированы.

Tolka
з.ы. и орфографию всё таки прогоните в ворде по F7. При виде таких ошибок вся "солидность" сразу испаряется. И отношение формируется соответствующее

по ворду прогонял. В остальном я ведь программист, а не журналист и не писатель. К томуже русский для меня не родной язык. Нужно чтобы кто-то свежим взглядом глянул и подредактировал.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36867650
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мне кажется сегодня нет смысла разрабатывать альтернативу MSVS.Net. Её создаёт корпорация и о конкурентоспособных возможностях говорить безсмысленно. Вы будете заведомо в проигрыше. А вот создать плагин или модуль для MSVS или Eclipse или NetBeans который-бы воплощал функционал отладки - вполне вам по силам.


rstudioSiemarglrstudio,

Пока не читал манифесты, но один главный вопрос есть.
Зачем пытаться дублировать возможности студии (до которых как до неба), если можно было написать к ней полноценный плагин со своими возможностями?

rstudio
общую идею немного зацепили, и даже разобрались в некоторых недостатках обычной отладки. Про это собственно написали прямо на центральной странице. Но не реализовали цельную среду разработки. Не сделали формат отчетов. Не сделали такой же наглядной отладку как при обычном рант тайм. Не сделали интеграцию с базами данных Ну и очень много чего не сделали из того как продумано и сделано у меня. Возможно одна из основных ошибок - попытка интегрироваться в существующую ИДЕ, хотя сама по себе фича заслуживает полной переработки студии. Переработки всего, деревьев, панелей, тулбаров и прочьего.
Поэтому на входе год назад у меня была возможно похожая идея, но я ее значительно дальше развил .
...
Рейтинг: 0 / 0
Research Studio .NET
    #36867686
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли гуглить по всемирному индексу документов то поиск Late+Debugging не даёт ничего релевантного. Ниже вы пытаетесь в двух словах объяснить что это такое. Этого недостаточно. Нельзя анонсировать целую технологию и при этом упомянуть о ней "всколзь". Это пренебрежение к читателю. Складывается впечатление будто вы говорите о вещах общеизвестных а на самом деле это совсем не так. Вы должны как минимум отдельную статью посвятить теоретическому описанию. Вы должны описать условия, предпосылки, необходимость, процесс поисков, найденные варианты, выбор лучшего варианта, теоретическое доказательство того что это работает, серию экспериментов и т.д.

да согласен, нужно будет подредактировать
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868063
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio
Отчет не содержит данные из таблиц и любые другие обьекты Базы Данных.
Он "запоминает" только
б) Цепочку выполненных строк в хранимых процедурах
в) Значение переменных которые проскакивали при выполнении.


интересно, как это вы для Oracle реализуете? :)

Насколько я знаю, вызов хранимок на клиенте выглядит как ExecuteQuery(p_stmt) или ExecuteProcedure(p_stmt) и нет никакого другого способа извне их дебажить. Только встроенными средствами базы, а это отдельная тема.

rstudio
Он не восстанавливает, он всего лишь эмулирует работу на машине тестера. Плюс здесь в том, что чтобы открыть отчет и восстановить работу программы с багом не нужно ничего настраивать. Тоесть для дебага хранимых процедур ( опять же в рамках выполнения ) не нужно усстанавливать сервер бд, разворачивать базу и так далее. Минус, здесь в том, что некоторые баги могут быть "вне". Тоесть чтобы их выявить нужно проссматривать не те обьекты, строчки кода, переменные которые были затронуты при выполнении, а другие обьекты, которые не были залогированы.


Для обычного процесса тестирования/отладки также не надо устанавливать сервер и бд. Оно всё и так поднято. В том то и суть, что, в случае Oracle, проверить серверную логику не удастся никак.
Аналогично, думаю, с MSSQL и многими другими СУБД.

Учитывая, что все большие проекты - это обязательно работа с СУБД, то ваша идея - это воспроизведение работы клиента , поэтому заявлять от 100% воспроизводимости бага можно только в маркетинговых целях.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolka
Для обычного процесса тестирования/отладки также не надо устанавливать сервер и бд. Оно всё и так поднято. В том то и суть, что, в случае Oracle, проверить серверную логику не удастся никак.
Аналогично, думаю, с MSSQL и многими другими СУБД.

Учитывая, что все большие проекты - это обязательно работа с СУБД, то ваша идея - это воспроизведение работы клиента , поэтому заявлять от 100% воспроизводимости бага можно только в маркетинговых целях.
Я давно озадачивался вопросом о практической неприменимости систем модульного тестирования (JUnit) в окружении storage procedures. Это весьма специфичная предметная область где результат воспроизведения ошибки - недетерминирован.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868218
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolkarstudio
Отчет не содержит данные из таблиц и любые другие обьекты Базы Данных.
Он "запоминает" только
б) Цепочку выполненных строк в хранимых процедурах
в) Значение переменных которые проскакивали при выполнении.


интересно, как это вы для Oracle реализуете? :)

Насколько я знаю, вызов хранимок на клиенте выглядит как ExecuteQuery(p_stmt) или ExecuteProcedure(p_stmt) и нет никакого другого способа извне их дебажить. Только встроенными средствами базы, а это отдельная тема.


Для MS SQL тоже нету никакого другого способа. Но я же както реализовал :)

вот например есть http://www.youtube.com/watch?v=LIphJEhvGqM
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868232
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonTolka
Для обычного процесса тестирования/отладки также не надо устанавливать сервер и бд. Оно всё и так поднято. В том то и суть, что, в случае Oracle, проверить серверную логику не удастся никак.
Аналогично, думаю, с MSSQL и многими другими СУБД.

Учитывая, что все большие проекты - это обязательно работа с СУБД, то ваша идея - это воспроизведение работы клиента , поэтому заявлять от 100% воспроизводимости бага можно только в маркетинговых целях.
Я давно озадачивался вопросом о практической неприменимости систем модульного тестирования (JUnit) в окружении storage procedures. Это весьма специфичная предметная область где результат воспроизведения ошибки - недетерминирован.

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

но этого просто некому занятся,
Майкрософт это не сделает, а остальным влом.

Я вот кое что начал рыть и делать но мои ресурсы конечно ограничены.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868683
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio
Весь дебаг идет по отчету, тоесть без физически выполняющегося приложения и базы данных на целевой машине. Только используя записанный отчет ( лог ).


т.е. ты, вытянув сырцы хранимки, идёшь по ней, подставляя значения входных параметров (как при этом ходит по всяким IF, используя объявленные и вычисленные внутри процедуры параметры, я не представляю). Ничего при этом не вычисляя заново, а просто отображая на каждом шаге значения залогированных параметров. Потом на N шаге произошла ошибка - ты её отображаешь (как при этом определить точный шаг, где произошла ошибка - также не понятно).

Ну что ж - сплошной "дебаг" с вхождением внутрь хранимых процедур СУБД - это конечно круто. Довести IDE до Enterprise уровня...задача феерическая. Тебе потребуется терпение явно не на один год.

удачи в этом нелёгком деле :)
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868731
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolkarstudio
Весь дебаг идет по отчету, тоесть без физически выполняющегося приложения и базы данных на целевой машине. Только используя записанный отчет ( лог ).


т.е. ты, вытянув сырцы хранимки, идёшь по ней, подставляя значения входных параметров (как при этом ходит по всяким IF, используя объявленные и вычисленные внутри процедуры параметры, я не представляю). Ничего при этом не вычисляя заново, а просто отображая на каждом шаге значения залогированных параметров.


Да, именно так. Для поиска бага этого обычно достаточно.

Tolka
Потом на N шаге произошла ошибка - ты её отображаешь (как при этом определить точный шаг, где произошла ошибка - также не понятно).


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

Tolka
Ну что ж - сплошной "дебаг" с вхождением внутрь хранимых процедур СУБД - это конечно круто. Довести IDE до Enterprise уровня...задача феерическая. Тебе потребуется терпение явно не на один год.

удачи в этом нелёгком деле :)

сейчас я особо времени не трачу на проект,
к сожалению интерес невелик, в среде опен сорц в том числе.
Людям кажется что этот проект нереально сложен, хотя многие фичи вполне себе реализуемы и уже работают на протототипе.
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868780
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio
для базы данных не хватает нормальной отладки,
нормального эксплорера по обьектам ( как дурачок сидишь и целыми днями набираешь за смену сотни


Всего для базы данных хватает, не свисти
...
Рейтинг: 0 / 0
Research Studio .NET
    #36868837
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioTolkarstudio
Весь дебаг идет по отчету, тоесть без физически выполняющегося приложения и базы данных на целевой машине. Только используя записанный отчет ( лог ).


т.е. ты, вытянув сырцы хранимки, идёшь по ней, подставляя значения входных параметров (как при этом ходит по всяким IF, используя объявленные и вычисленные внутри процедуры параметры, я не представляю). Ничего при этом не вычисляя заново, а просто отображая на каждом шаге значения залогированных параметров.


Да, именно так. Для поиска бага этого обычно достаточно.особенно, когда в хранимке есть нечто типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
UPDATE dbo.delivery_hdr
   SET StateID =  5 
  FROM dbo.delivery_hdr dh
       INNER JOIN dbo.records r ON dh.ID = r.DeliveryID
                  INNER JOIN dbo.declaration_cargo dc ON r.ID = dc.RecordID
                             INNER JOIN (
    SELECT d.ID DeclarationID, d.StateID DeclarationState, r.DeliveryID
      FROM dbo.declaration_hdr d
               INNER JOIN dbo.declaration_cargo dc ON dc.DeclarationID = d.ID
                          INNER JOIN dbo.records r ON dc.RecordID = r.ID
                                     INNER JOIN (
        SELECT dh.ID DeliveryID, dh.StateID DeliveryState
          FROM dbo.declaration_hdr d
               INNER JOIN dbo.declaration_cargo dc ON dc.DeclarationID = d.ID
                          INNER JOIN dbo.records r ON dc.RecordID = r.ID
                                     INNER JOIN dbo.delivery_hdr dh ON r.DeliveryID = dh.ID
         WHERE d.ID = @declarationID 
        ) q ON r.DeliveryID = q.DeliveryID 
    ) q ON dc.DeclarationID = q.DeclarationID
 WHERE dh.StateID =  4  AND
       dh.ID NOT IN (
    SELECT dh.ID DeliveryID
      FROM dbo.delivery_hdr dh
           INNER JOIN (
        SELECT d.ID DeclarationID, d.StateID DeclarationState, r.DeliveryID, dh.StateID DeliveryState
          FROM dbo.declaration_hdr d
                   INNER JOIN dbo.declaration_cargo dc ON dc.DeclarationID = d.ID
                              INNER JOIN dbo.records r ON dc.RecordID = r.ID
                                         INNER JOIN dbo.delivery_hdr dh ON r.DeliveryID = dh.ID
                                         INNER JOIN (
            SELECT dh.ID DeliveryID, dh.StateID DeliveryState
              FROM dbo.declaration_hdr d
                   INNER JOIN dbo.declaration_cargo dc ON dc.DeclarationID = d.ID
                              INNER JOIN dbo.records r ON dc.RecordID = r.ID
                                         INNER JOIN dbo.delivery_hdr dh ON r.DeliveryID = dh.ID
             WHERE d.ID = @declarationID 
            ) q ON r.DeliveryID = q.DeliveryID 
         WHERE d.StateID NOT IN (  4 ,  5 ,  6  )
        ) q ON dh.ID = q.DeliveryID 
    );
...
Рейтинг: 0 / 0
25 сообщений из 128, страница 4 из 6
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Research Studio .NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]