Модератор: Модераторы
Ой, отладчик попал…. Astra Linux, Lazarus 2.2.4 extern so
День добрый!
Не могу понять почему чудит Лазарус, при попытке добавить в приложение вызов с внешней библиотеки, при запуске отладки выдается сообщение что
Ой, отладчик попал в состояние ошибки
Команда GDB:
«-exec-run»
не возвратила никакого результата.
проявляется в самом простом проекте
код библиотеки
- Код: Выделить всё
library hello;
{$mode objfpc}{$H+}
uses
Classes
{ you can add units after this };function Hello: string; cdecl;
begin
result := 'Hello!';
end;exports
Hello;begin
end.
код приложения
- Код: Выделить всё
unit helloFrm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs;type
TForm1 = class(TForm)
privatepublic
end;
var
Form1: TForm1;implementation
{$R *.lfm}
function Hello(): string; cdecl; external 'libhello.so';
end.
фактически есть только импорт функции, все остальное убрано. Если его закоментарить — запускается
Lazarus
- Код: Выделить всё
Lazarus 2.2.4 (rev Unversioned directory) FPC 3.2.2 x86_64-linux-gtk2
/usr/bin/fpc
-MObjFPC
-Scghi
-Cg
-O1
-g
-gl
-l
-vewnhibq
-Filib/x86_64-linux
-Fu/usr/share/lazarus/2.2.4/lcl/units/x86_64-linux/gtk2
-Fu/usr/share/lazarus/2.2.4/lcl/units/x86_64-linux
-Fu/usr/share/lazarus/2.2.4/components/freetype/lib/x86_64-linux
-Fu/usr/share/lazarus/2.2.4/components/lazutils/lib/x86_64-linux
-Fu/usr/share/lazarus/2.2.4/packager/units/x86_64-linux
-Fu.
-FUlib/x86_64-linux
-FE.
-ohello_prg
-dLCL
-dLCLgtk2
Linux
- Код: Выделить всё
Linux rev-orel 5.4.0-71-generic #astra33+ci2-Ubuntu SMP Mon Jun 21 22:55:15 UTC 2021 x86_64 GNU/Linux
В виндовс все прекрасно добавляется и запускается
- GreyCrazyWolf
- незнакомец
- Сообщения: 3
- Зарегистрирован: 02.03.2023 15:23:57
Re: Ой, отладчик попал…. Astra Linux, Lazarus 2.2.4 extern
BlackShark » 17.03.2023 10:35:39
Попробуй дебагер fpDebug, правда ранее он не поддерживал отладку библиотек из хостового приложения, сейчас не в курсе как с этим обстоят дела, но автор писал что планирует добавить. Как раз вышла версия Lazarus 2.2.6, там много изменений по fpDebug.
-
BlackShark - новенький
- Сообщения: 41
- Зарегистрирован: 20.05.2019 12:52:15
-
- Профиль
- Сайт
Вернуться в Lazarus
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Да так, от скуки захожу. 141 / 120 / 44 Регистрация: 25.06.2017 Сообщений: 360 Записей в блоге: 3 |
|
1 |
|
Ошибка отладчика01.10.2020, 19:14. Показов 3509. Ответов 2
Всем привет, у меня после компиляции появляется ошибка, хотя проект компилируется и после запускается. Смысл ошибки я не понимаю. Кто может подсказать какими путями можно исправить? Миниатюры
0 |
пофигист широкого профиля 4658 / 3093 / 854 Регистрация: 15.07.2013 Сообщений: 17,841 |
|
02.10.2020, 02:30 |
2 |
Сообщение было отмечено SkyLion27 как решение РешениеРедактор, компилятор и отладчик — это те самые, которые всегда «соображают на троих». Иногда возникают нестыковки между ними. Особенно часто проблемы вызывают именно точки остановки. Ведь в редакторе мы ставим точку останова на текстовой строке кода. А после компиляции этой строки уже нет. Есть только бинарный код для процессора. И отладчик порой сбивается. В Дельфи это ранее часто происходило из-за например комментариев в тексте программы.
1 |
Да так, от скуки захожу. 141 / 120 / 44 Регистрация: 25.06.2017 Сообщений: 360 Записей в блоге: 3 |
|
02.10.2020, 22:20 [ТС] |
3 |
Проблему решил пересозданием проекта.
0 |
Одобрено: ASR Pro
Повысьте производительность вашего компьютера с помощью этой простой загрузки. г.
Вам следует прочитать эти идеи по исправлению, если самый важный отладчик ввел на вашем компьютере PIN-код состояния ошибки.
<дел><дел><дел><дел>
Когда я запускаю программу на Lazarus с F7 (ввод) или F8 (ввод), то компилируется, эта программа запускается, но через некоторое время это выглядит как ошибка:
“Ошибка отладчика
< p> Извините, отладчик зарегистрировал состояние ошибки.
Сохраните свою работу!”
Пока F9 работает нормально.
Что я могу сделать?
<дел><р>«Последнее изменение: 7 декабря 2012 г., 12:15:18, автор — Panoss»
Связанный
Многочисленные 32-разрядные версии Windows, Lazarus v1.8.4 и FPC 3.0.4.
<время><а> <дел><дел><дел><дел>
Возможных причин много:
Если это происходит при запуске приложения: попробуйте найти форум по работе с Bitdefender и брандмауэром comodo.
В разделе “Очень сложные случаи” включите принтер или измените просрочку на другой принтер. Слышал несколько случайных неподтвержденных ответов, некоторые драйверы принтеров вызывают небольшой сбой GDB (Lazarus использует GDB)
Одобрено: ASR Pro
ASR Pro — самый популярный и эффективный в мире инструмент для ремонта ПК. Миллионы людей доверяют ему обеспечение быстрой, бесперебойной и безошибочной работы своих систем. Благодаря простому пользовательскому интерфейсу и мощному механизму сканирования ASR Pro быстро находит и устраняет широкий спектр проблем Windows — от нестабильности системы и проблем с безопасностью до проблем с управлением памятью и производительностью.
Определенно:
Updatepre-Lazarus 0.9.30.2
Перейдите по ссылке на этот форум, вы найдете имейте это в виду на Sourceforge .
Многие ошибки были исправлены, и определенно выходит обновление GDB (win).
Позже проверил, что так, модернизировать конфиг, на который ссылается мысль выложить в GDB. (В Linux убедитесь, что у вас установлена GBB 7.2 или более крупная версия / на Mac серьезно 6.3.50)
См. http://wiki.lazarus.freepascal.org/Debugger_Setup
Для получения дополнительной помощи, пожалуйста получить важную информацию, описанную здесь:
http://wiki.lazarus.freepascal.org/GDB_Debugger_Tips#Create_a_new_Report.
(Вы можете пропустить перекомпиляцию с любым родственным нашим определениям)
< /дел>
<дел>
Связанный
<время>
АвторТема: Ошибка отладчика Извините, отладчик выдал ошибку (4110 операций чтения)
Если я запускаю медиа в Lazarus с F7 (ввод) или F8 (ввод), он компилируется, программа запускается, хотя каждая ошибка отображается мгновенно:
“Отладчик отключен
Извините, все отладчики достигли повторения ошибки
Сохраните свою работу с помощью! “
с обычным расширением F9.
Что я могу сделать?
<р>«Последнее изменение: 2 декабря 2011 г., 12:15:18, сделано Panoss»
Если вы проходите мимо своего дома в случаях, когда запускается приложение магазина: этот форум предназначен для битдефендера, связанного с брандмауэром comodo.
В очень редких случаях включите этот принтер или измените настройки по умолчанию, чтобы найти другой принтер. Я читал или слышал случайные / неподтвержденные сообщения о том, что некоторые драйверы принтера вызывают сбой GDB в какой-то степени (Lazarus использует GDB)
Следуйте инструкциям по загрузке на этом форуме, вы должны найти Sourceforge.
Исправлены многие глюки и добавлена обновленная GDB (Win).
Итак, следуя за обновлением, проверьте тип конфига, указывающий – обновленный GDB. (В Linux убедитесь, что у кого-то установлена версия GBB 7.2 или выше. На Apple PC доступна только версия 6.3.50)
См. http://wiki.lazarus.freepascal.org/Debugger_Setup
Некоторое время назад я установил Lazarus (версия 1.4.4) на мини-Mac (OSX 10.10 Yosemite), а также отладчик GDB. Когда я компилирую и запускаю идеальное простое приложение — например, форму списания — все, что вы знаете, в порядке. К сожалению, когда я закрываю работающее приложение, я получаю каждое сообщение
<цитата>
GDB генерирует встроенную ошибку: нажмите OK, чтобы продолжить. отлаживать. Это может быть НЕ уверен. Нажмите «Стоп», чтобы перейти к расширенному устранению неполадок. Сессия.
<цитата>
К сожалению, текущий установленный отладчик имеет статус ошибки. Получите ваш образ жизни работой сейчас. Резать Остановитесь и стремитесь к лучшему; снимите заглушку.
Я выбираю “стоп” в странном сообщении, и все в порядке. Стоит ли нам этого ожидать? Параметры «Показывать сообщение при завершении работы» и «Сбросить отладчик после многократного запуска» не выбраны в стильном отладчике. … Я видел эту информацию о той похожей ошибке, ей уже несколько лет и она тоже уже не актуальна.
г.
Ошибка отладчика Lazarus в AstraLinux
31 января 202331 января 2023
После успешной компиляции приложения в Lazarus под AstraLinux и попытке запуска появляется сообщение об ошибке отладчика: «Отладчик не смог запустить приложение». При этом окно подробностей ничего внятного не сообщает:
Причина
Вероятнее всего в таком случае виновата блокировка системных вызовов ptrace, которая активируется по-умолчанию, если не убрать соответствующую галочку при установке AstraLinux.
ptrace (от process trace) — системный вызов в Linux, который позволяет трассировать или отлаживать выбранный процесс. ptrace дает полный контроль над процессом: можно изменять ход выполнения программы, смотреть и изменять значения в памяти или состояния регистров. При этом никаких дополнительных прав не получаем — действия ограничены правами запущенного процесса.
Решение
Необходимо отключить блокировку ptrace. Сделать это можно под админом в графическом интерфейсе: Панель управления — Безопасность — Политика безопасности. Далее открываем раздел Настройки безопасности — Системные параметры. Нас интересует галочка «Блокировка трассировки ptrace для всех пользователей«. Её необходимо убрать:
После этого применяем изменения и перезагружаемся. После перезагрузки отладчик должен заработать как положено.
То же самое можно выполнить и в терминале (например, по SSH). Для проверки состояния выполняем команду:
$ systemctl is-enabled astra-ptrace-lock
Если ответ «enabled», значит блокировка включена. Выключаем её:
$ sudo astra-ptrace-lock disable
$ sudo reboot
Данная статья проверялась для AstraLinux SE 1.7.2
I think we established through a series of queries in comments that the necessary and sufficient condition to provoke the debugger problem you’ve been getting is to include in your app the declaration of the array p
that you’ve added to your q, that is:
var
p: array [1..15000, 1..10000, 1..7, 1..4] of integer;
For you, it seems that just including this declaration in your code is sufficient to make the debugger throw the error you quote.
For me the debugger starts fine but I get a SIGSEGV error on the assignment to p[]
in the following code:
var
p: array [1..15000, 1..10000, 1..7, 1..4] of integer;
x,
y,
r : integer;
begin
x := 100;
y := 100;
r := 666;
p[x, y, 1, 1] := r;
writeln('Press any key ...');
readln;
end.
So, I would try smaller values for the first two bounds of the p
array. If that works and you still need the original bounds, I would suggest looking for an FPC library which implements «sparse arrays» and declare p
as one of those.
Good luck!