Разные недочеты/баги

main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

вобщем поправил такк чтобы undo_limit игнорился в этом случае. но это будет медленно для оч больших выделений. но зато данные не потеряем.
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

> чтобы undo_limit игнорился в этом случае

В каком?
Случае большого выделения?
При replase на пробел или время (и т.п.)?
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

Отладка сбоя GTK в Lubuntu 23.04 (пишу подробно для себя - если забуду потом, и для начинающих)
=================================================================================
Запустил скрипт ./cudaup.sh -g -p -m

Вопрос: почему скачался именно GTK?
Где это задается, в скрипте?


Нашел поиском *.lpi
file:///home/dell500/cudatext_up/src/CudaText/app/cudatext.lpi
открыл в Lazarus его

В инспекторе объектов внутри компонентов нашел TfmMain


Находит по Ctrl+F FormCreate
procedure TfmMain.FormCreate(Sender: TObject);
FormShow не находит в этом модуле

Нашел
procedure TfmMain.FormShow(Sender: TObject);
(надо искать "везде", а не только в выделенном (по умолчанию)!)

Поставил точку останова (F5)
Просит указать отладчик - как?
По справке
Firefox не может найти файл /usr/share/lazarus/2.2.6/docs/index.html
Почему?
Хотя он есть: file:///usr/share/lazarus/2.2.6/docs/index.html
Встроенная Справка Lazarus не работает.


как настроить отладчик Lazarus - Поиск в Google

Debugger Setup/ru - Lazarus wiki
https://wiki.freepascal.org/Debugger_Setup/ru

отладка - Как настроить отладчик в Lazarus? - Stack Overflow на русском
https://ru.stackoverflow.com/questions/ ... B2-lazarus
В настройках Сервис - Параметры - Отладчик - Общие выбрать тип отладчика


Добавил GNU Debugger

Все равно не работает указание точки останова
При настройках и выборе пути "Нет исполняемого файла"
(А как система определяет, что этот файл исполняемый, тип файла?)

$ sudo apt install gdb !
Выбираю /usr/bin/gdb
Не ругается!

F5 ставит!

Поставил точки останова на Begin FormCreate и FormShow
Исполнение остановлено
Как выполнять по шагам?
F9?
F9:
здесь остановила один раз:

//default "ui_scale":0 must be converted to Screen's DPI
ATEditorScalePercents:= Max(100, 100*Screen.PixelsPerInch div 96);
ATSynEdit_Finder.MsgBox_InFinder:= @MsgBox;

Исполнение остановлено
(Если отключить это сообщение, как включить потом? В настройках?)

В редакторе - есть зеленая стрелка - перейти вперед!
Редактор исходного кода не двигается

А, был запущен CudaText 1.196.0.0, linux-x86_64-qt5, fpc 3.2.3, закрою!


Отладка по шагам (F9 - каждый шаг):

procedure TfmMain.FormCreate(Sender: TObject);
begin
UpdateMenuTheming_WhiteLine;

procedure TfmMain.FormShow(Sender: TObject);

begin
if UiOps.SplittersUsePoorStyle then

Показала форму

3483
begin
if UiOps.SplittersUsePoorStyle then

F9 - сбой!
Аварийное завершение сеанса

Сбой на строке
3483 if UiOps.SplittersUsePoorStyle then

=================================================================================
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

mix-7 wrote:> чтобы undo_limit игнорился в этом случае

В каком?
Случае большого выделения?
При replase на пробел или время (и т.п.)?
да, в случае большого выделения.
при наборе пробела или вызове InsertTime.

можете уже обновить пакет atsynedit и собрать Куд. вроде бы стало ОК.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

>Вопрос: почему скачался именно GTK?
gtk2 = default widgetset в лазарусе.
>Где это задается, в скрипте?
скрипту можно дать параметр для выбора другого widgetset (обычно другой это Qt5).
-w qt5
>Исполнение остановлено/ Как выполнять по шагам?/ F9?
breakpoint ставится кликом на Гуттере на левой его части. только на строках "с кодом",
то есть в FormCreate это первая строка -
UpdateMenuTheming_WhiteLine;
когда он ставится то редактор покажет красную строку.

запускаем из IDE по F9.
должно остановиться на breakpoint.
потом жмем кнопки тулбара IDE -

Step over, F8
Step into, F7

>Исполнение остановлено (Если отключить это сообщение, как включить потом? В настройках?)
это не знаю.
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

Спасибо за ответы!

> Исполнение остановлено
> (Если отключить это сообщение, как включить потом? В настройках?)

Кажется, нашел:
Параметры - Отладчик - Общие - Показывать сообщение при остановке



> Step over, F8
> Step into, F7

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

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


Нашел где вылетает.
Правда, не процесс, а отладчик.
Перед его вылетом появляется пустая форма.

Сообщение отладчика об ошибке:
Во время исполнения команды:
"TGDBMIDebuggerInstruction: "-stack-list-locals 1", [ifRequiresThread, ifRequiresStackFrame, ifRequiresMemLimit, ifRequiresArrayLimit] Thr=1 Frm=0"
GDB сообщил:
"&"A fatal error internal to GDB has been detected, further\ndebugging is not possible. GDB will now terminate.\n\n"
Команда GDB:
"-stack-list-locals 1"
не возвратила никакого результата.
Процесс GDB больше не выполняется.

файл (? вкладка редактора кода с этим заголовком - это файл?) wincontrol.inc ,
строка 4882 if FDockSite and FUseDockManager and Assigned(DockManager) then

Код:

Code: Select all

      RestoreDC(DC, SaveIndex);
    end;
    // paint controls
    //DebugLn('[TWinControl.PaintHandler] ',DbgSName(Self),' PaintControls ...');
    if FDockSite and FUseDockManager and Assigned(DockManager) then
      DockManager.PaintSite(DC);
    PaintControls(DC, nil);   

Пять тыщ строк!
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

main Alexey wrote:
mix-7 wrote:> чтобы undo_limit игнорился в этом случае

В каком?
Случае большого выделения?
При replase на пробел или время (и т.п.)?
да, в случае большого выделения.
при наборе пробела или вызове InsertTime.

можете уже обновить пакет atsynedit и собрать Куд. вроде бы стало ОК.
Вопрос
А если забить большое выделение каким-либо другим символом, не пробелом?
Undo не будет работать?

> можете уже обновить пакет atsynedit и собрать Куд. вроде бы стало ОК

Запустить скрипт вновь с параметрами -g -p -m или скачать отдельно с GIT вручную, а потом запустить в Lazarus компиляцию и сборку?
добавив предаврительно atsynedit.lpk:
стоп. вы открыли LPK файлы. но не уставили их! для каждого LPK надо нажать "копмилировать" и потом "установить" в окошкке package manager.
(отсюда)
Всего компиляцию или только atsynedit.lpk, а потом сборку?
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

>Запустить скрипт вновь с параметрами -g -p -m или скачать отдельно с GIT вручную, а потом запустить в Lazarus компиляцию и сборку?

запустить cudaup -g -m .
'-p' уже не нужно, пакет и так установился.


>Всего компиляцию или только atsynedit.lpk, а потом сборку?

если руками - то зайти в каталог atsynedit и там сделать
git pull
потом в Лазарус сделать compile.
правда иногда мне приходится удалять папку atsynedit/atsynedit/lib, т к не перекомпилируется.

если cudatext_up, то
cudaup -g -m
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

> git pull
https://github.com/Alexey-T/ATSynEdit/t ... /atsynedit ?

> потом в Лазарус сделать compile.
atsynedit.lpk?

Спасибо, завтра попробую!

Вопрос по git:
можно ли изменить описание (или заголовка?) коммита с Add files via upload на более осмысленное, например fix #13?
Раньше не обратил внимание, что так можно и полезно делать.

Add files via upload · mix-7/cuda_clipboard_catcher@a5f6376
https://github.com/mix-7/cuda_clipboard ... a43ac8cd98

Add files via upload
Поискал - нашел, попробую:

Как переименовать коммит git в репозитории - Q&A Хекслет
https://ru.hexlet.io/qna/git/questions/ ... epozitorii
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

mix-7 wrote:Нашел где вылетает.
https://synwrite.sourceforge.net/forums ... 748#p17748

Я там среди прочего написал о найденной в процессе отладки ошибке на ноутбуке с Lubuntu 23.04 с разрешением экрана 1280 х 800.
Посмотрите, плз, достаточно ли этого или надо продолжить отладку?
И как это сделать, если отладчик вылетает?
И нет ли способа ее автоматизировать - выполнять по шагам автоматически, не нажимая вручную F8, записывая последний до аварийного завершения шаг и ставя там точку останова для последующей отладки?
Post Reply