External sigsegv lazarus что за ошибка

Lazarus (Delphi) — Ошибка «External: SIGSEGV», помогите, пожалуйста, разобраться, скрины прилагаются

Добрый день, поставил я себе задачку.
Ввожу в левое поле наименование продукта, в правое — его цену. Нажимаю на кнопку «Ввод», и все это должно записаться в один файл построчно в формате «продукт — цена». Для этого намутил вот такой вот код (нужно, чтобы каждый раз файл не переписывался, а дополнялся, поэтому ничего лучше, кроме стандартного паскалевского Append’a не придумал).
Программа компилится, запускается, ввожу данные, и, при нажатии на кнопку Ввода, мне прилетает такая вот ошибка. Ну и вот такую штуку выдает, когда нажимаю «Ок».
Кто может, подскажите, пожалуйста, как пофиксить, что изменить и т. д. На языке чайников, если можно =)
/> /> /> />

Ошибка Lazarus «Внешний: SIGSEGV» при увеличении переменной?

У меня проблема в моем проекте Lazarus: каждый раз, когда я хочу использовать функцию, она выдает указанную выше ошибку ( External: SIGSEGV ). Я не знаю, что это значит, но некоторая отладка показала мне, что это код, вызывающий ошибку:

Исключение происходит после i := i + 1; . Буду очень благодарен, если вы мне поможете!

2 ответа

Динамические массивы, такие как TStringArray = array of string; , начинаются с нуля; ваш код использует его как 1 и вызывает нарушение прав доступа.

Вам следует заменить i := 1; на i := 0;

Что касается второй проблемы, это связано с тем, что вы обращаетесь к индексу i, который в начале равен 1, поэтому у вас есть проблема, диапазон массива определяется как «длина — 1», поэтому, если ваша длина равна 1, тогда ваш диапазон равен 0. Таким образом, чтобы решить проблему в вашем цикле for, вы должны поместить Result[i-1] := s; таким образом, чтобы получить доступ к нужному индексу.

Ошибка "External: SIGSEGV"

Ошибка "External: sigsegv" при нажатии на кнопку
Вылетает ошибка при нажатии на кнопку- класс исключения "External: sigsegv". помогите пожалуйста.

Ошибка "External: SIGSEGV" в классе TControl
У меня при работе программы появляется ошибка. Что она означает?

Ошибка: External "SIGSEGV" Error
Такая проблема: Я сейчас обучаюсь в институте после колледжа, и там некоторые предметы у меня была.

Что за ошибка "External: SIGSEGV"?
Подскажите как избавится от ошибки External:SIGSEGV? она возникает вот здесь, т.е. при самой.

Lazarus ошибка SIGSEGV

Хотел как честный человек работать на бесплатном софте поставил lazarus c fpc и отладчиком migw, беру простейший пример по инициализации окна в opengl, проект собирается нормально, но стоит его запустить из под IDE как вылазиет эта наглая ошибка, хотя если просто запустить exe то проблем нету, обшарил все форумы пишут что виноват comodo и описывают как добавить его в исключения, но comodo у меня никогда не стоял, стоит только касперский но я пробовал его отключать ничего не помогает, качал последнюю версию migw такая же ситуация. В чем тут косяк может быть уже второй день пошел как я трачу нервы.

лазарус очень глючная среда, иногда не копилила код, до перезапуска среды, периодически отрудается суфлер кода, и про размер получаемых экзешников лучше промолчать. Зачем ты хоть ее выбрал.

Ситуация такая проект задумывается такой: серверную часть игры написать под линукс, а саму игру для пользователя делать под виндовс, поэтому подумал писать на нем чтоб боле мене код сделать кросплатформенным, а тут такие косяки уже при простейшем коде, что я уже боюсь дальше что-либо кодить на нем ((

Kavis
> серверную часть игры написать под линукс, а саму игру для пользователя делать
> под виндовс, поэтому подумал писать на нем чтоб боле мене код сделать
> кросплатформенным, а тут такие косяки уже при простейшем коде, что я уже боюсь
> дальше что-либо кодить на нем ((
Может, легче написать все в дельфи, а когда все будет готово портировать на лазарус?
Отладчик mingw (точнее gdb) все равно слабо пригоден для fpc, свойства смотреть не умеет, с потоками не работает и т.д. Так что отлаживай через лог.

MAMONT-92
> про размер получаемых экзешников лучше промолчать
1-2 Мегабайта, сопоставимо с дельфи. А 10+Мб получается если компилировать с отладочной информацией.

Видимо другой отладчик нужно заюзать :).

kipar
А кроме Мингэвешного отладчика есть какие-нить ещё?
А то тоже иногда бывает страдаю такой проблемой)

ExeLord
Паскалевского нету, во всяком случае я не встречал. Там в папке lazarus\debugger\fpdebug\fpd есть заготовка для него, но разработчикам видимо не до того.

А любой сишный будет еще хуже gdb, т.к. вообще не имеет представления о синтаксисе паскаля.

kipar
> А любой сишный будет еще хуже gdb, т.к. вообще не имеет представления о
> синтаксисе паскаля.
Ну это ясно.
Ладно, жду с нетерпением отладчик от разрабов)
А так, и без него прожить можно. Пока и гбд не сильно парит.
Кстати, в случае постоянного SIGSEGV, вследствии магнитных бурь на солнце, квантовой флуктуации и прочей нечести
можно ли отключить отладчик и заставить Лазарь запускать ехе вчистую (просто лень папку открывать и руками делать 🙂 )?

В общем я подумал все взвесил и пришел к выводу ,что проще заплатить за делфи и виндос сервер, чем гемороиться. просто идея была игру писать типа так сервер игры на облачном сервере с ОС линукс, а клиент игры на винде, и чтоб проще было в переносе кросплатформенности делать через FPC но как я посмотрел цены на VDS на облачные почти одинаковы что сервер на винду, что сервер на линукс, в общем проще писать на делфи под винду — хрен с ними с парами штуками дерявянных, но я знаю за что их отдам, чем так страдать ((

kipar
> Отладчик mingw (точнее gdb) все равно слабо пригоден для fpc, свойства смотреть
> не умеет, с потоками не работает и т.д. Так что отлаживай через лог.

Умеет смотреть он свойства, просто галочку оптимизации не нужно ставить на самую высокую -O1.

> 1-2 Мегабайта, сопоставимо с дельфи. А 10+Мб получается если компилировать с
> отладочной информацией.

Там есть галочка, компилировать отладочную информацию в отдельном файле.

Kavis
> В общем я подумал все взвесил и пришел к выводу ,что проще заплатить за делфи и
> виндос сервер, чем гемороиться. просто идея была игру писать типа так сервер
> игры на облачном сервере с ОС линукс, а клиент игры на винде, и чтоб проще было
> в переносе кросплатформенности делать через FPC но как я посмотрел цены на VDS
> на облачные почти одинаковы что сервер на винду, что сервер на линукс, в общем
> проще писать на делфи под винду — хрен с ними с парами штуками дерявянных, но я
> знаю за что их отдам, чем так страдать ((

Выбор FPC или Delphi для сервера самый глупый, для этих целей лучше выбрать Java или по-проще node.js, где для начала хоть есть сборщик мусора и куча готовых решений как под первое, так и под второе.

DevelS
Я же не веб-сервер собрался писать, а сервер для игры.

Ну да я немного попутал, без разницы, сервер.

ExeLord
> можно ли отключить отладчик и заставить Лазарь запускать ехе вчистую (просто
> лень папку открывать и руками делать 🙂
Да, Сервис\Параметры\Отладчик\выбираем (none).
Ну и компилим без отладочной информации, тогда и процесс компиляции ускоряется (хотя может у меня просто винт тормозной).

DevelS
> Умеет смотреть он свойства, просто галочку оптимизации не нужно ставить на
> самую высокую -O1.
Нет, он поля умеет смотреть. А свойства, скажем TList.Count (а не FCount) у меня даже без оптимизации не показывал. Хотя могли уже пофиксить.

DevelS
> Там есть галочка, компилировать отладочную информацию в отдельном файле.
У меня при этой галочке отладчик никаких символов не видит. Хотя может руки кривые — есть какой-нибудь способ IDE указать чтоб оно получаемый .gdb использовало?

Kavis
SIGSEGV — это же сигнал в UNIX, уведомляющий об ошибке обращения к памяти. Причём тут .exe? В Windows нету таких сигналов.

Кирюшык
Lazarus называет этим словом Access Violation.

kipar
> У меня при этой галочке отладчик никаких символов не видит. Хотя может руки
> кривые — есть какой-нибудь способ IDE указать чтоб оно получаемый .gdb
> использовало?

У меня отладка работала стабильно при отдельном файле, по крайней мере в винде.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *