Разные недочеты/баги
-
- Posts: 2245
- Joined: 25.08.2021 18:15
Отладка сбоя 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
=================================================================================
=================================================================================
Запустил скрипт ./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
=================================================================================
-
- Posts: 2245
- Joined: 25.08.2021 18:15
-
- Posts: 2245
- Joined: 25.08.2021 18:15
gtk2 = default widgetset в лазарусе.>Вопрос: почему скачался именно GTK?
скрипту можно дать параметр для выбора другого widgetset (обычно другой это Qt5).>Где это задается, в скрипте?
-w qt5
breakpoint ставится кликом на Гуттере на левой его части. только на строках "с кодом",>Исполнение остановлено/ Как выполнять по шагам?/ F9?
то есть в FormCreate это первая строка -
UpdateMenuTheming_WhiteLine;
когда он ставится то редактор покажет красную строку.
запускаем из IDE по F9.
должно остановиться на breakpoint.
потом жмем кнопки тулбара IDE -
Step over, F8
Step into, F7
это не знаю.>Исполнение остановлено (Если отключить это сообщение, как включить потом? В настройках?)
Спасибо за ответы!
> Исполнение остановлено
> (Если отключить это сообщение, как включить потом? В настройках?)
Кажется, нашел:
Параметры - Отладчик - Общие - Показывать сообщение при остановке
> Step over, F8
> Step into, F7
А есть ли "автомат", сам "нажимающий" F8 и записывающий точку ошибки и значения переменных?
Очень уж много нажимать F8
Например, двигался бы сам по шагам, ставил бы точки останова, а предыдущие убирал.
И тогда бы неубранная из-за аварии последняя точка останова была бы местом перед аварийным оператором.
Какое-нибудь макро для отладки.
Останов перед ошибкой.
Потом, правда, догадался расставить точки останова через промежутки в благополучно пройденном коде для следующего запуска по F9 до этих благополучных точек.
Нашел где вылетает.
Правда, не процесс, а отладчик.
Перед его вылетом появляется пустая форма.
Сообщение отладчика об ошибке:
файл (? вкладка редактора кода с этим заголовком - это файл?) wincontrol.inc ,
строка 4882 if FDockSite and FUseDockManager and Assigned(DockManager) then
Код:
Пять тыщ строк!
> Исполнение остановлено
> (Если отключить это сообщение, как включить потом? В настройках?)
Кажется, нашел:
Параметры - Отладчик - Общие - Показывать сообщение при остановке
> 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);
Пять тыщ строк!
Вопрос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, а потом сборку?
-
- Posts: 2245
- Joined: 25.08.2021 18:15
>Запустить скрипт вновь с параметрами -g -p -m или скачать отдельно с GIT вручную, а потом запустить в Lazarus компиляцию и сборку?
запустить cudaup -g -m .
'-p' уже не нужно, пакет и так установился.
>Всего компиляцию или только atsynedit.lpk, а потом сборку?
если руками - то зайти в каталог atsynedit и там сделать
git pull
потом в Лазарус сделать compile.
правда иногда мне приходится удалять папку atsynedit/atsynedit/lib, т к не перекомпилируется.
если cudatext_up, то
cudaup -g -m
запустить cudaup -g -m .
'-p' уже не нужно, пакет и так установился.
>Всего компиляцию или только atsynedit.lpk, а потом сборку?
если руками - то зайти в каталог atsynedit и там сделать
git pull
потом в Лазарус сделать compile.
правда иногда мне приходится удалять папку atsynedit/atsynedit/lib, т к не перекомпилируется.
если cudatext_up, то
cudaup -g -m
> 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
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
https://synwrite.sourceforge.net/forums ... 748#p17748mix-7 wrote:Нашел где вылетает.
Я там среди прочего написал о найденной в процессе отладки ошибке на ноутбуке с Lubuntu 23.04 с разрешением экрана 1280 х 800.
Посмотрите, плз, достаточно ли этого или надо продолжить отладку?
И как это сделать, если отладчик вылетает?
И нет ли способа ее автоматизировать - выполнять по шагам автоматически, не нажимая вручную F8, записывая последний до аварийного завершения шаг и ставя там точку останова для последующей отладки?