PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Программа падает с сообщением ...


Программа падает с сообщением ...

Сообщений 1 страница 9 из 9

1

"Инструкция по адресу 0x00406a84 обратилась к памяти по адресу 0....

Как понять с чем это связано? С какой строкой программы?

P.S. Нашел причину. Не нашел - как удалить эту тему.

Отредактировано SadStar (11.11.2011 11:15:36)

0

2

SadStar написал(а):

Как понять с чем это связано? С какой строкой программы?

В опциях проекта, отметь пункт "Поддержка OnError строк" и создай EXEшник из этого кода.

Код:
Procedure FatalError() 
   Protected Result$, Line 
   
   Result$="Упс, прога навернулась " 
   Line = ErrorLine() 
   If Line>=0 
     Result$+" в строке "+Str(Line)+", файла: "+ErrorFile() 
   EndIf 
   
   Result$+Chr(10)+Chr(10)+"Ошибка типа: "+Chr(34)+ErrorMessage()+Chr(34) 
   Result$+Chr(10)+Chr(10)+"Напишите об этом разробу проги и может он соизволит исправить этот баг." 
   MessageRequester("Ошибка программы!", Result$, #MB_OK|#MB_ICONERROR) 
   End 
 EndProcedure 
 
DisableDebugger
 OnErrorCall(@FatalError()) 
 a/z ; Тут у нас ошибка.

Запусти скомпилированный EXEшник и посмотри что будет.
А будет примерно следующее:

http://radikal.ua/data/upload/ba193/69fda/9cd3fbd37e.png

0

3

OnErrorCall(@FatalError())

Этот перехват ошибок нужно делать в каждом потоке или достаточно при входе в программу?

0

4

Один на всю программу.
В самом начале кода поставь и все.

0

5

Привет народ , у меня предупреждение компелятора в третьей строке запрещено использование гаджета
в файле кнопка.pb. Мож настроить чё надо ?

0

6

andr10001 написал(а):

запрещено использование гаджета

Скорее всего имеется в виду функция CreateGadgetList().
Ее нужно найти и удалить из кода.
Об этом можно прочитать в этой теме форума. Мне постоянно пищет вот это

0

7

Спасибо Пётр

0

8

Срабатывает FatalError() который пишет ошибки в лог-файл

вижу строку
20111230 11:21:17:FatalError():  в строке 167, файла: D:\PureBasic_projects\WindServer\WindServer.pb Ошибка типа: "Invalid memory access"

смотрю исходник
в 167 строке

EndProcedure

Что может быть причиной?

0

9

SadStar написал(а):

Что может быть причиной?

Скорее всего, ошибка в стеке.

Пример падения программы с сообщением "Invalid memory access" в строке с EndProcedure.

Код:
Procedure proc()
EndProcedure ; Тут будет ошибка стека.

Procedure Test()
  CallFunctionFast(@proc(), 100) ; В стек закладывается лишний параметр.
EndProcedure

Procedure FatalError() 
   Protected Result$, Line 
   
   Result$="Упс, прога навернулась " 
   Line = ErrorLine() 
   If Line>=0 
     Result$+" в строке "+Str(Line)+", файла: "+ErrorFile() 
   EndIf 
   
   Result$+Chr(10)+Chr(10)+"Ошибка типа: "+Chr(34)+ErrorMessage()+Chr(34) 
   Result$+Chr(10)+Chr(10)+"Напишите об этом разробу проги и может он соизволит исправить этот баг." 
   MessageRequester("Ошибка программы!", Result$, #MB_OK|#MB_ICONERROR) 
   End 
 EndProcedure 
 
DisableDebugger
OnErrorCall(@FatalError()) 

Test()

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Программа падает с сообщением ...