Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182

Аддон для отладчика

17.02.2023, 21:39. Показов 697. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как создать, если это не сложно, простенький аддон, который вместо точек останова будет создавать просто счётчики, но чтобы их можно было так-же легко ставить как и точки останова, и чтобы их можно было ставить если нужно даже просто напротив комментария (просто как-то трудновато поставить точку останова перед входом в цикл - останавилваться начинает всё равно в первой строке тела цикла).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2023, 21:39
Ответы с готовыми решениями:

Аддон для браузера
Здравствуйте. Как написать дополнение для браузера, например для Мозилы или Хрома? Слышал, что пишут как-то на скриптах или что-то в этом...

Аддон для Firefox
Привет всем! Скажите, есть ли расширение для Firefox'a, который позволяет делать следующее: при наведении указателя мыши на край...

Ищу аддон для Firefox v35.0.1 для работы с тегами закладок
У меня большая база данных закладок в браузере Firefox версии 35.0.1. Более 5 тыс закладок. Каждая закладка помечена несколькими...

15
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,461
18.02.2023, 01:30
Цитата Сообщение от Hretgir Посмотреть сообщение
как-то трудновато поставить точку останова перед входом в цикл - останавливаться начинает всё равно в первой строке тела цикла
Почему? Например, где ставишь точку останова?

Вот так останавливается до начала цикла:
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
18.02.2023, 02:51
Цитата Сообщение от AzAtom Посмотреть сообщение
Вот так останавливается до начала цикла:
Ну это для "нормального человеческого" цикла.
А у ТС собственный "псевдоязык". Дикая смесь ассемблера с языкрм высокого уровня.
1
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 20:09  [ТС]
если цикл с постусловием, то это не работает.
Обычный цикл, я дикостей не делаю просто так.
Ставлю перед repeat.
0
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,461
18.02.2023, 20:30
Пример кода будет, где остановка не работает, как положено?
0
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 22:52  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Пример кода будет, где остановка не работает, как положено?

Pascal
1
2
3
4
5
6
7
8
if (FcountPix1>0) and (y>=0)then begin
           repeat
           StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//   StringGrid1.Cells[1+px^,1+py^]:= IntToStr(countPix);
           inc(countPix);
           TtracerRec.ix:=x;
           dec(x);
           until 0 > x;
           TtracerRec.yg:=y;// в старом проекте это иначе, это я просто вынес за, так как оно один раз только нужно, что в первой итерации
в новом этот цикл так выглядит

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
      repeat
            StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//   StringGrid1.Cells[1+px^,1+py^]:= IntToStr(countPix);//StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//
            TtracerRec.ix:=x;
            dec(x);
            inc(countPix);
            asm
            jmp p
            end;
            l1:
            TtracerRec.bool:=false;
            TtracerRec.yg:=y;
            p:=@l2;
            l2:
            until Biger > x;
теперь нет такой проблемы.
Да и не было большой проблемы...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            //until ((28-fi*CaTanDegP-ri)>x);
            if ((28-fi*CaTanDegP-ri)>x) then goto t2;////////////////
            goto t1;///////////////////
            t2://////////////////
            if (FcountPix1>0) and (y>=0)then begin/////////////////
            Biger:=0;////////////////////////////
            v:=@v2;/////////////////////////
            goto l0;//////////////////////
           //
           //repeat
           //StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//   StringGrid1.Cells[1+px^,1+py^]:= IntToStr(countPix);
           //inc(countPix);
           //TtracerRec.ix:=x;
           //TtracerRec.yg:=y;
           //dec(x);
           //until 0 > x;
      end;
          v2: //////////////
Но изменения от оптимизации я не измерял по времени выполнения.
Просто я немного не в настроении, я думал, что если есть отладчик с ассемблером, то может есть инструментарий и для проверки результата оптимизации... а его нет...

Добавлено через 7 минут
А так хотелось-бы...
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
18.02.2023, 22:57
Цитата Сообщение от Hretgir Посмотреть сообщение
и для проверки результата оптимизации... а его нет...
gprof чем вас не устраивает?
2
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 22:59  [ТС]
правка

Добавлено через 20 секунд
Цитата Сообщение от Azathtot Посмотреть сообщение
gprof
что это?
я с радостью-бы, но не знаю.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
18.02.2023, 23:00
Цитата Сообщение от Hretgir Посмотреть сообщение
что это?
Профайлер. Который как раз решает вашу задачу
1
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 23:02  [ТС]
Нашёл, читаю.
0
602 / 550 / 210
Регистрация: 24.01.2012
Сообщений: 1,352
18.02.2023, 23:10
Цитата Сообщение от Azathtot Посмотреть сообщение
gprof чем вас не устраивает?
Интересно. Не знал про такое. Вот, только в "вике" наткнулся на это Поддержка gprof для Linux поломана в версиях FPC 2.2.0-2.4.0 (исправлено только в svn trunk/2.5.1).
1
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 23:12  [ТС]
Это желательно освоить наверное как-то.

Добавлено через 56 секунд
Цитата Сообщение от edukra Посмотреть сообщение
Интересно. Не знал про такое. Вот, только в "вике" наткнулся на это Поддержка gprof для Linux поломана в версиях FPC 2.2.0-2.4.0 (исправлено только в svn trunk/2.5.1).
спасибо, буду знать.
0
602 / 550 / 210
Регистрация: 24.01.2012
Сообщений: 1,352
18.02.2023, 23:16
Цитата Сообщение от Hretgir Посмотреть сообщение
исправлено только в svn trunk/2.5.1
Хотя это не актуально. статья устарела, т.к. в lazarus уже используется fpc 3.2.2
0
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
18.02.2023, 23:21  [ТС]
сломал координату по игрику
Всё-таки вот так
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            repeat
            StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//   StringGrid1.Cells[1+px^,1+py^]:= IntToStr(countPix);//StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//
            TtracerRec.ix:=x;
            dec(x);
            inc(countPix);
            asm
            jmp p
            end;
            l1:
            TtracerRec.bool:=false;
            p:=@l2;
            l2:
                        TtracerRec.yg:=y;
            until Biger > x;

, надо доделать как-то ещё оптимизацию на координату игрик.
0
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,461
19.02.2023, 07:38
Цитата Сообщение от Hretgir Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  repeat
    StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');
    TtracerRec.ix:=x;
    dec(x);
    inc(countPix);
    asm
       jmp p
    end;
  l1:
    TtracerRec.bool:=false;
    p:=@l2;
  l2:
    TtracerRec.yg:=y;
  until Biger > x;
Здесь самой лучшей оптимизацией будет убрать обращение к StringGrid. Если он всё же нужен, то нужно его вынести из цикла. Например, заполнять числа в отдельный массив, и уже по окончании расчётов вносить этот массив в StringGrid.

Добавлено через 12 минут
Цитата Сообщение от Hretgir Посмотреть сообщение
в новом этот цикл так выглядит
Нда... Я имел в виду код, который и нам можно было запустить и посмотреть, как оно не останавливается до входа в цикл...

Цитата Сообщение от Hretgir Посмотреть сообщение
просто как-то трудновато поставить точку останова перед входом в цикл - останавилваться начинает всё равно в первой строке тела цикла
Останавливается до исполнения строки, на которой остановился.
Ну и кто мешает поставить точку останова на команде до входа в цикл?
1
 Аватар для Hrethgir
319 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,254
Записей в блоге: 182
19.02.2023, 12:16  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Нда... Я имел в виду код, который и нам можно было запустить и посмотреть, как оно не останавливается до входа в цикл...
я его и имел ввиду, что это цикл который выполняется при положительной проверке условия.
В новом коде я уже этого не делал, потому как разобрался с своим кодом и понял что ошибка достаточно легко ищется, а в старом для меня всё ещё не было столь тривиально и мне была нужна с ним точка останова.
Со старым кодом задача выглядела как узнать что программа вошла в цикл, но чтобы точка останова не была в теле цикла.
Я тоже думаю, что этот мой код для конкретного случая, и вовсе нет нужды писать по нему учебник.

Цитата Сообщение от AzAtom Посмотреть сообщение
Ну и кто мешает поставить точку останова на команде до входа в цикл?
проверка условия.
Да вообще не стоит парится - код простой, просто разбираться долго.
Можно просто какую-то строку ещё ввести перед началом цикла. Просто я думал что в IDE есть что на этот случай или нет.

Но аддон я всё-таки хочу-он должен уметь "взламывать" циклы (автоматически дописывать код вместо цикла, следить за метками, ну как-то так, в общем всячески облегчить мне эту работу с метками и указателями). Но можно и без него - всегда хочется какой-нибудь аддон.
Данный код можно теперь оптимизировать на добавление кода: по мере исполнения один код убывает, а другой добавляется.
очень много операторов if, коорые можно убрать как если-бы код обавлялся, в противоположность коду, который программа со временем начинает "перепрыгивать".
три оператора проверки условия, а к ним можно добавить операторы проверки оных что после цикла-ядра.
правда там всего один такой
и тогда я по настоящему смогу называть этот код словом "генератор", потому что ни одной проверки условия, кроме тех что заменяют циклы или следят за условиями их выполнения
, ну или логические условия, кооторые вообще никак не обойти.
В общем осталась пара штрихов, но система теперь есть и работа в общем не стихийно уже производится.

Добавлено через 1 час 11 минут
код в целом блока выглядит так, а то как-то замылился
Pascal
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
            repeat
            v:=@v1;
            ri:=0;
            x:=27;
            y:=BasiY;
            step:=1;
            TtracerRec.bool:=true;
            second_run := true;
            p:=@l1;
            if BasiY>27 then  begin
            step:= BasiY-27+1;
            x:=27-(step-1)*CaTanDegP;
            y:=27;
            ri:=0;
            end;
            //repeat
            t1:
            FcountPix:=28-(step*CaTanDegP);
            ri1:=BasiY-fi;
            if (FcountPix1>=1) then begin
            stepF:=fi;
            end;
 
            if ri1<0 then begin
            ri:= ri1*CaTanDegP+1;
            end;
            Biger:=FcountPix;
            l0:
            /////vbnvn
            repeat
            StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//   StringGrid1.Cells[1+px^,1+py^]:= IntToStr(countPix);//StringGrid1.Cells[1+px^,1+py^]:= IntToStr(TtracerRec.ix)+','+IntToStr(TtracerRec.yg) +','+BoolToStr(TtracerRec.bool, '1', '0');//
            TtracerRec.ix:=x;
            dec(x);
            inc(countPix);
            asm
            jmp p
            end;
            l1:
            TtracerRec.bool:=false;
            p:=@l2;
            l2:
            TtracerRec.yg:=y;
            p:=@l3;
            l3:
            until Biger > x;
            asm
            jmp v
            end;
            v1:
            dec(y);
            p:=@l2;
            inc(step);
            if ((28-fi*CaTanDegP-ri)>x) then goto t2;
            goto t1;
            t2:
            if (FcountPix1>0) and (y>=0)then begin
            Biger:=0;
            v:=@v2;
            goto l0;
      end;
          v2:
          if x = -1 then TtracerRec.ix:=0;
            inc(BasiY);
            until BasiY=fi1;
осталось исключить последние проверки условий, но система в целом уже вполне внятна.
Осталось найти способ исключить последние неважные проверки условий, и возможно это будет продолжение этого способа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2023, 12:16
Помогаю со студенческими работами здесь

Аддон для экспорта из Блендера
Здравствуйте. Собрался написать скрипт для экспорта объектов из блендера в обычный текстовый файл. import bpy f =...

Посоветуйте лингвистический аддон для Mozilla
Здравствуйте. Хочу чтобы мой браузер при клике на слово выводил его перевод на нескольких языках (как GoogleTranslator, только с...

Аддон Circuit Works для SolidWorks
Здравствуйте, не могу найти аддон для моей версии SolidWorks. В составе каких версий доступен этот аддон?

Не компилится vlc аддон для openframeworks
Привет. Генератором проектов openframeworks создал проект с аддоном ofxVLCVideoPlayer. Инструкцию из readme выполнил. При заходе в VS,...

Стоит ли писать аддон для Joomshopping?
Работаю с Joomla 2.5+, Joomhopping 3.19+ Захотел я сделать так, чтоб в Joomshopping адрес доставки вводился после выбора конкретного...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru