Непонятный краш приложения в Win32

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 09.05.2015 13:28:29

Всем привет и всех с Праздником!

Ребят, подскажите, что не так. Есть приложение. Оно нормально работает в Win64, но когда компилирую в Win32, происходит это:
LazarusWin32Error_1.png

LazarusWin32Error_2.png


Что это и как лечить?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение Vadim » 09.05.2015 20:46:44

BadBoyAlex писал(а):но когда компилирую в Win32

Компилируете или запускаете программу?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 09.05.2015 21:14:22

Vadim писал(а):
BadBoyAlex писал(а):но когда компилирую в Win32

Компилируете или запускаете программу?

Действительно, когда запускаю.
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение Padre_Mortius » 09.05.2015 21:29:41

BadBoyAlex, запустите приложение под gdb и посмотрите где падает
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 09.05.2015 21:37:24

Padre_Mortius писал(а):запустите приложение под gdb и посмотрите где падает


А как это сделать-то?
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение Padre_Mortius » 10.05.2015 00:45:16

Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Непонятный краш приложения в Win32

Сообщение Sharfik » 10.05.2015 02:58:29

BadBoyAlex писал(а):Что это и как лечить?

Больше информации для гадания надо.
dll какие то загружаются в ней?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Непонятный краш приложения в Win32

Сообщение resident » 10.05.2015 12:11:33

Padre_Mortius писал(а):Как-то так

Интересно, решил испробовать вашу инструкцию и завис. Где скачать файл gdb.exe. Может подскажите? :)
Отсюда http://www.gnu.org/software/gdb/download/
Зашел сюда http://ftp.gnu.org/gnu/gdb/
Скачал архив gdb-7.9.tar.xz
gdb.exe там не могу найти.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Непонятный краш приложения в Win32

Сообщение Padre_Mortius » 10.05.2015 13:57:25

resident, обычно рядом с fpc лежит в папке bin
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Непонятный краш приложения в Win32

Сообщение resident » 10.05.2015 14:56:27

Padre_Mortius спасиб, нашел в другой папке
Код: Выделить всё
C:\lazarus\mingw\i386-win32\bin
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 19.05.2015 14:27:41

Итак, вот, что выдаёт GDB:
LazarusError.png


Из разбора понял, что ошибка возникает в вызове DLL, НО! в Win64 работает! Что не так с Win32 понятия не приложу.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение Лекс Айрин » 19.05.2015 14:59:33

BadBoyAlex, а dll у вас не 64битная?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 19.05.2015 15:00:52

Лекс Айрин писал(а):а dll у вас не 64битная?

нет, 32-битная
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение BadBoyAlex » 22.05.2015 09:13:47

После небольшого разбора: крашится от ошибки в обращении к памяти.
Вот процедура в библиотеке:
Код: Выделить всё
procedure MyFmtStr (var VStr: PChar);
var Str: String;
begin
Str:= VStr;
Str:= Format(Str, [1,2,3]);
VStr:= PChar(Str);
end;

Вот в коде:
Код: Выделить всё
function  MyFmtStr (const AStr: String): String;
var DLLInst: THandle;
    MyProc: procedure  (var VStr: PChar);
    Str: PChar;
begin
DLLInst:= SafeLoadLibrary('StrFrmtDll.dll');
@MyProc:= GetProcAddress(DLLInst, 'MyFmtStr');
Result:= AStr;
Str:= PChar(AStr);
try
MyProc(Str);
finally
Result:= Str;
FreeLibrary(DLLInst);
end;
end;

//Собсно, сам вызов функции
//...
ShowMessage(MyFmtStr('Мы считали барашков: %d, %d пришли, а вот %d заблудился...'));
//...

Что не так?
Аватара пользователя
BadBoyAlex
постоялец
 
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород

Re: Непонятный краш приложения в Win32

Сообщение kazalex » 22.05.2015 12:10:39

BadBoyAlex писал(а):Что не так?

Ссылка на Str, которая живет только в рамках MyFmtStr.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

Рейтинг@Mail.ru
cron