tag:blogger.com,1999:blog-2374465879949372415.post5627564624312935866..comments2023-04-16T14:22:53.095+03:00Comments on Блог Rouse_: Изучаем отладчик, часть перваяАлександр (Rouse_) Багельhttp://www.blogger.com/profile/03072586754182036553noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-2374465879949372415.post-71733599329562741122013-07-20T22:40:48.454+04:002013-07-20T22:40:48.454+04:00Привет от Loser from DelphiMasters) Замечательная ...Привет от Loser from DelphiMasters) Замечательная статья! Искренне Вам благодарен за отличную подачу материала и полноту описания (особенно для начинающих, коим являюсь)!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-67969930807679769032013-06-04T10:32:37.531+04:002013-06-04T10:32:37.531+04:00Всегда пожалуйста :)Всегда пожалуйста :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-52678247555080527862013-06-01T22:07:08.662+04:002013-06-01T22:07:08.662+04:00Александр, спасибо за статью. Впервые увидел испол...Александр, спасибо за статью. Впервые увидел использование BP групп, изучил, попробовал на приведеных примерах, взял на вооружение. Супер!!dengernoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-47896414754421590712013-04-26T21:24:07.317+04:002013-04-26T21:24:07.317+04:00>> и мы нажимаем f7, чтобы зайти в него
Да, ...>> и мы нажимаем f7, чтобы зайти в него<br />Да, знакомая ситуация, это явно стороннее ПО влияет на работу. На чистой системе данное поведение не наблюдается (иначе кодецентрал был-бы завален багрепортами по данной ошибке)<br /><br />По юнит тестам - я полностью и целиком ЗА!<br />Но по логам я боюсь вы их изначально описали немного не так. Ваше описание более подходит под крашрепорт, а не под отладочный лог :) А это немного разные вещи, согласитесь...<br /><br />По поводу ВМ, кажется я вас понял, вы описываете профилировщик.<br />Если да - то я полностью согласен с вашими доводами.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-61635754778372758862013-04-26T20:35:43.140+04:002013-04-26T20:35:43.140+04:00Возможно, мы вкладываем в понятие "вход в syn...Возможно, мы вкладываем в понятие "вход в synchronize" разные смыслы. Я имел ввиду ситуацию, когда курсор выполнения находится над synchronize(имя_метода) и мы нажимаем f7, чтобы зайти в него. Если поставить брейкпоинт внуть данного метода, всё отработает без подвисания. <br /><br />Из последнего глюка, что запомнилось - в коде был экземпляр класса TStringList и обращение к ValueFromIndex[i], где i - счетчик цикла for от 0 до Count - 1. Отладчик повис при наведении курсора на ValueFromIndex. Помог только его перезапуск через Program reset.<br /><br />~~<br />Насчет логов. У них главное преимущество в том, что можно собирать на стороне пользователя. Конечно, в d7 есть сервер удаленного отладчика, но далеко не каждый клиент захочет его себе установить. С логом нет таких проблем, достаточно его включить в настройках программы, повторить действия и отправить разработчикам. И это наиболее быстрый способ выяснить причины сбоя, если проблема не воспроизводится на компьютерах разработчиков (с таким я сталкиваюсь часто).<br /><br />Разработчик эти логи анализирует, по необходимости дописывает юнит-тесты, доказывающие корректную работу кода при обнаруженной проблеме и переписывает программу чтобы все они успешно отрабатывали. Так это делается в современных платформах разработки. В делфи 7, конечно, такой подход тоже применим, но на практике не используется.<br /><br />~~<br />ВМ сама управляет выделенной памятью. Уточню: я имею ввиду не гипервизоры, а виртуальные машины, исполняющие байткод. ВМ подсчитывает ссылки, автоматически удаляет неиспользуемые объекты и следит за границами полей. Так что любая попытка переписать что-то за пределы поля повлечёт за собой исключение.<br /><br />Одна из вещей, которая сильно досаждает в Delphi 7 - невозможность реализации аналогов std::shared_ptr и std::weak_ptr, которые есть в C++ для управления памятью. Это связано с тем, что в стеке хранятся только POD-типы, но не экземпляры классов. Поэтому при выходе из функций не вызываются деструкторы там, где это хотелось бы.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-36723631846676207562013-04-26T16:02:30.326+04:002013-04-26T16:02:30.326+04:00Хм первый раз слышу про подвисание при входе в Syn...Хм первый раз слышу про подвисание при входе в Synchronize или на чтении переменной. Вероятно причина не в отладчике, а в стороннем ПО. Например когда-то давно у меня стоял Outpost - он вызывал достаточно серьезные ошибки при работе с отладчиком, вполть до полного зависания IDE.<br /><br />По поводу логов, так-же первый раз слышу что они рекомендованы :)<br />Тот-же DebugPrint просто дополнительное средство, но не основное.<br /><br />Ну а по поводу ВМ, как она сможет отследить разрушение поля обьекта, который расположен в выделенной памяти? Ведь память принадлежит приложению и она полностью валидна.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-29549663081703465072013-04-26T13:02:25.889+04:002013-04-26T13:02:25.889+04:00Изучение отладчика Delphi 7 неполно без изучения е...Изучение отладчика Delphi 7 неполно без изучения его противопехотных приёмов. Например, попытка шагнуть внутрь Synchronize приведёт к подвисанию приложения (придется сделать Program Reset и начинать отладку заново).<br /><br />Еще регулярно сталкиваюсь с тем, что отладчик не может прочитать значение символа и подвисает на этом. В таком случае снова требуется перезапуск. Кстати, куча ошибок до сих пор не исправлена в самой IDE и в VCL, т.к. поддержка прекращена.<br /><br />Любопытно вот что: все современные технологии программирования считают традиционную отладку устаревшим приёмом. Вместо этого должны вестись содержательные логи, а для предотвращения регрессий код должен покрываться тестами.<br /><br />Да и сам процесс поиска причины низкоуровневых ошибок (вроде работы с памятью) выглядит бессмысленной тратой времени при наличии сегодня качественных управляемых платформ для разработки, использующих ВМ.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-76782092868604454652013-03-16T18:56:53.729+04:002013-03-16T18:56:53.729+04:00Спасибо бро)Спасибо бро)gexonhttps://www.blogger.com/profile/14790431792367647089noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-64165052702674929642012-12-28T13:52:05.381+04:002012-12-28T13:52:05.381+04:00Пожалуйста :)Пожалуйста :)blackmanhttps://www.blogger.com/profile/08482472995063545654noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-6818508773277628812012-11-30T21:07:11.463+04:002012-11-30T21:07:11.463+04:00Ну и оригинальный вариант тогда: http://rouse.drkb...Ну и оригинальный вариант тогда: http://rouse.drkb.ru/winapi.php#dbg<br />ЗЫ: <br />кстати, ребята из http://articles.org.ru - вам отдельный респект, такой шикарной коллекции по тематике Delphi, в рунете если я не ошибаюсь нет аналогов. <br />Молодцы.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-84568891241923197152012-11-30T20:55:12.768+04:002012-11-30T20:55:12.768+04:00http://articles.org.ru/cn/showdetail.php?cid=9157 ...http://articles.org.ru/cn/showdetail.php?cid=9157 - ссылки на статью и примерыAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-57387145614057037822012-11-08T10:17:23.836+04:002012-11-08T10:17:23.836+04:00Здорово написано, с чувством, с толком, с расстано...Здорово написано, с чувством, с толком, с расстановкой. <br />Читал, как художественную книгу, прочитанную в детстве.DimaBrnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-49441802649118237372012-11-01T18:02:13.961+04:002012-11-01T18:02:13.961+04:00Отладка и отладчик все-же немного разные вещи.
Есл...Отладка и отладчик все-же немного разные вещи.<br />Если второе, это просто инструмент, то первое - целая философия :)<br />Тут я даже не знаю как правильно вообще давать материал, что такое отладка...Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-81454753907642402922012-11-01T15:26:07.650+04:002012-11-01T15:26:07.650+04:00Да, было бы неплохо устроить вебинар для изучения ...Да, было бы неплохо устроить вебинар для изучения отладки. Ведь часто отладка сводиться к простому ShowMessage :(Anonymoushttps://www.blogger.com/profile/09860129918619366612noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-62418929919758997502012-11-01T09:48:31.255+04:002012-11-01T09:48:31.255+04:00Спасибо за понятную и полезную статью. Узнал неско...Спасибо за понятную и полезную статью. Узнал несколько новых для себя моментов.<br />Могу добавить, что в группе настроек «Syntax options» часто включаю ещё последнюю - "Assignable typed constants", что позволяет организовать аналог СИшных статических локальных переменных в процедурах.Dmitro25https://www.blogger.com/profile/12046945578640649999noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-71190973806597593882012-10-28T08:19:27.339+04:002012-10-28T08:19:27.339+04:00Большое спасибо! Не часто встречаются такие нужные...Большое спасибо! Не часто встречаются такие нужные и хорошо проработанные материалы.Sergei_titovnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-7332350105122369972012-10-26T11:02:37.392+04:002012-10-26T11:02:37.392+04:00Спасибо, предложение конечно заманчивое, но у меня...Спасибо, предложение конечно заманчивое, но у меня боюсь технически не получится в рабочее время участвовать в вебинаре. Не поймут :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-91057197045258393832012-10-25T19:32:39.362+04:002012-10-25T19:32:39.362+04:00Спасибо!Спасибо!Лаккиnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-60183169901896567032012-10-25T15:57:24.696+04:002012-10-25T15:57:24.696+04:00Спасибо за полезный материалСпасибо за полезный материалAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-49053559126137022082012-10-25T13:42:10.546+04:002012-10-25T13:42:10.546+04:00Александр, есть некая сложившаяся практика, что пр...Александр, есть некая сложившаяся практика, что программисты "old school" предпочитают "бумагу" (текст), тогда как "new school" больше ориентируются на видео/вебинары/короткие посты.<br />В действительности данная статья будет для многих даже опытных людей определенным откровением. Однако хочу попросить Вас подумать о вебинаре на данную тему. Сейчас мы в Embarcadero верстаем программу вебинаров на 4-ый квартал. Александр Алексеев (aka gunsmoker) любезно согласился сделать тренинг широким массам Delphi-трудящихся на тему "исключений". Я думаю, Ваш вебинар на тему "отладчика" очень бы гармонично сочетался с вебинаром на тему "исключений". <br /><br />Если есть желание внести вклад в базу знаний в таком формате - подробности по e-mail или скайпу.<br /><br />С уважением,<br />ВсеволодVsevolod Leonovhttp://blogs.embarcadero.com/vsevolodleonovnoreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-61509030082353344092012-10-24T23:12:22.269+04:002012-10-24T23:12:22.269+04:00Спасибо, это мне стоило почти месяца подготовки :)...Спасибо, это мне стоило почти месяца подготовки :) <br />Вторую и третью части я написал за 4 дня, включая исходный код к ним, ибо технические вещи мне даются просто. <br />А с первой были затруднения, оказывается не просто подать материал так, чтобы он был понятен даже начинающим программистам и гораздо сложнее придумывать неправильные примеры кода на базе которых и основана первая часть статьи :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-2374465879949372415.post-81149048113823290692012-10-24T23:02:25.534+04:002012-10-24T23:02:25.534+04:00Отличная статья, получил удовольствие. Рекомендова...Отличная статья, получил удовольствие. Рекомендовано всем. Глубина изложения умело скрывается за великолепно-лёгким стилем изложения, чувствуется увлечённость автора предметом. Вспомнил период расцвета Delphi, когда одна шедевральная статья сменялась другой. <br /><br />Материал приобретает дополнительную ценность в свете резкого изменения общих индустриальных трендов от управляемых кодов и абстрагирования от понимания работы компилятора до нативного кодирования на основе системных знаний.<br /><br />Александр, примите искреннюю благодарность! (краями казалось, что "старая гвардия" ушла на покой в виде ленивого чтения лент си-ньюз... оказалось, что такие статьи дают проср@ться молодым дарованиям :), хотя они тоже не дремлют в своей попсовой интерпретации возможностей Delphi)<br /><br />Всеволод Леоновhttp://blogs.embarcadero.com/vsevolodleonovnoreply@blogger.com