== ==
0) Запоминаем адрес Runtime error at 000xxxxx (лидирующие нули запоминать не обязательно)
1) Открыть ту же схему (обязательно - без малейших изменений!), которая вылетала после компиляции (в идеале - запускать из HiAsm, дождаться вылета, запомнить ошибку и , не закрывая схемы провести манипуляции, описанные ниже)
2) Сервис - Компиляторы - Сами_знаете_какой_компилятор - Командная строка
3) Дописываете в конце ещё один ключик с приклееным (то есть без пробела, без лидирующих нулей) к нему адресом: "%fname%" "-U %opath%." -Q -Fxxxxx (Внимание! Теперь при компиляции среда удалит приложение из папки, а перенастроенный компилятор новое не создаст, не удивляйтесь)
4) Жмёте "Сохранить", убеждаетесь, что тот же компилятор выбран в настройках компиляции
5) Запускаете компиляцию и смотрите в панель "Отладка"
6) Видите там :
hiНАЗВАНИЕ_ЭЛЕМЕНТА.pas(НОМЕР_СТРОКИ_В_ИСХОДНИКЕ) Target address found.
dtInteger(_Data, TDocItem(FItem)._prop_X);
^
dtInteger(_Data, TDocItem(FItem)._prop_X);
^
7) Открываем исходник компонента (например, по CTRL+F), если это не компонент, а библиотека, можно, конечно, посмотреть и туда, но дальнейшие пункты не помогут.
8) Ищем нужный номер строки (CTRL+G)
9) Ищем по строчкам выше указанной первую вида procedure THIИмяКомпонента._ТипТочки_НазваниеТочки;
10) Вот на точке с таким именем у Вас и вылезла проблема, для восстановления нормальной компиляции удалите -Fxxxxx из настроек компилятора.
Больше информации даст только ключ компилятора -V, T[цензура] Debugger 5.5 и знания ассемблера Хороший отладчик и дамп памяти ничего не заменит. Раз из-за обработчика паскаля , то учимся создавать дампы самостоятельно, например [burl=http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24370]этим[/burl], [burl=http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx]этим[/burl] или [burl=http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx]этим[/burl]. А если бы у Вас была NT6.x , то ещё и штатным диспетчером задач. Другой вопрос, кто и как будет эти дампы анализировать
Neo писал(а):
Никаких отчетов не создалось почему-то.Neo, если не уверены в твёрдой руке и зорком глазе, делаем мини-помощника (схема универсальная, рассчитана на извлечения адреса ошибки из системных и паскалевских окон, но под FPC пришлось бы немного подпилить):
Add(MainForm,2953706,581,301)
{
Width=337
Height=104
Caption="iFoundBug v 1.01 for HiAsm4"
Position=1
Point(doVisible)
}
Add(EnumProcess,1,595,455)
{
Name="HiAsm.exe"
Point(doFindName)
Point(doTerminateApp)
Point(onEndEnum)
link(onProcess,913119:doSearch,[])
link(onEndEnum,9898452:doWork3,[(634,468)])
}
Add(Position,913119,644,455)
{
Target="HiAsm.exe"
StartPos=0
ShortSearch=1
link(onSearch,1:doKill,[(688,461)(688,504)(584,504)(584,475)])
}
Add(MathParse,6921369,420,511)
{
DataCount=1
MathStr="1 XOR ((%1 = 8) OR ((%1 < 58) AND (%1 > 47)) OR ((%1 < 71) AND (%1 > 64)) OR ((%1 < 103) AND (%1 > 96))) "
ResultType=0
link(onResult,15365421:doReadOnly,[(459,517)(459,551)(367,551)(367,461)])
}
Add(Convertor,3538249,378,511)
{
Mode=3
link(onResult,6921369:doCalc,[])
}
Add(Edit,15365421,378,441)
{
Left=190
Width=110
Height=25
Font=[MS Sans Serif,14,0,0,1]
Text=""
MaxLenField=8
ClearAfterEnter=1
Point(onChar)
Point(doReadOnly)
Point(doSetFocus)
link(onEnter,15187644:doWork2,[])
link(onChar,3538249:doConvert,[(422,461)(422,479)(373,479)(373,517)])
}
Add(Label,12751195,581,343)
{
Width=185
Height=25
Font=[MS Sans Serif,14,0,0,1]
Caption="Runtime Error xxx at"
}
Add(CheckBox,13015840,546,406)
{
Top=32
Width=329
Align=4
Caption="Close HiAsm Automatically "
}
Add(IndexToChanel,14112223,546,448)
{
Point(Index)
link(onEvent1,9898452:doWork2,[])
link(onEvent2,1:doEnum,[])
link(Index,13015840:Checked,[])
}
Add(BitBtn,8848863,7,308)
{
Left=300
Width=28
Height=26
WinStyle=1
Bitmap=[ZIP3609000078DA73F235E36400033320D600620928666450804840E591C17F7AE0FFFF69830799F9F0301D62E6E302D4301FD91C747309DA41C07C74FDD8DC8DD70E3CE63390182FA498CF40469AC5AA87CEE6134A23F8C4B0EA1966E143AFF4438FF44F8FFC4B8FF2674894CFA318111E501A240AA21B686827C86C0082C8CFF1]
Point(onMouseDown)
link(onMouseDown,13657323:doEvent1,[])
}
Add(Timer,7902216,119,322)
{
Interval=100
Enable=1
link(onTimer,3079690:doReadKey,[])
}
Add(Keyboard,3079690,168,322)
{
Key=1
link(onReadKey,8327191:doEvent,[])
}
Add(IndexToChanel,8327191,217,322)
{
Count=1
link(onEvent1,15825518:doEvent1,[])
}
Add(Hub,15825518,259,322)
{
link(onEvent1,7902216:doStop,[(282,328)(282,358)(114,358)(114,335)])
link(onEvent2,14550971:doEvent1,[])
}
Add(ChanelToIndex,8531589,525,329)
{
link(onIndex,2953706:doVisible,[])
}
Add(Hub,13657323,77,315)
{
link(onEvent1,2014895:In,[(105,321)(105,314)])
link(onEvent2,7902216:doTimer,[])
}
Add(LineBreak,7325179,511,301)
{
Caption="doHide"
link(Out,8531589:doWork1,[(571,307)(571,321)(513,321)(513,335)])
Primary=[2014895,-392,7]
}
Add(Hub,14550971,301,329)
{
OutCount=3
link(onEvent1,1915601:doData,[(385,335)(385,237)])
link(onEvent2,8531589:doWork2,[])
link(onEvent3,15365421:doSetFocus,[(344,349)(344,468)])
}
Add(MultiElementEx,1915601,392,231)
{
@Hint=#24:Error message box reader|19:SendMessage version|
link(onCopy,5992494:In,[])
}
BEGIN_SDK
Add(EditMultiEx,5756599,21,21)
{
WorkCount=#6:doData|
EventCount=#6:onCopy|
Width=412
link(doData,5834539:doData,[(35,27)(35,97)])
}
Add(MouseEvent,2701288,119,49)
{
Point(Handle)
}
Add(Position,234326,273,133)
{
Target=" at 000"
StartPos=0
ShortSearch=1
link(onSearch,13714767:doOperation,[])
link(Str,3605979:Var2,[])
}
Add(Math,13714767,322,133)
{
Op2=7
ResultType=0
link(onResult,12025091:doCopy,[])
}
Add(Copy,12025091,364,133)
{
Count=5
link(onCopy,5756599:onCopy,[(425,139)(425,27)])
link(Str,3605979:Var3,[(370,117)])
}
Add(GetDataEx,3605979,273,112)
{
Angle=3
link(Data,13155387:Value,[(256,117)(256,177)(237,177)])
}
Add(SendMessage,15421399,133,140)
{
Message=13
link(onSend,16305821:doGet,[])
link(Handle,2701288:Handle,[])
link(LParam,1164314:Memory,[(153,131)(209,131)])
}
Add(MemoryStream,1164314,189,84)
{
Point(Memory)
Point(doSize)
}
Add(DataToFile,16305821,189,133)
{
Type=6
link(onGet,13155387:doValue,[])
link(Stream,1164314:Stream,[])
}
Add(Hub,8233292,98,91)
{
OutCount=3
link(onEvent1,1164314:doClear,[])
link(onEvent2,1164314:doSize,[])
link(onEvent3,15421399:doSendMessage,[(122,111)(122,146)])
}
Add(DoData,5834539,49,91)
{
Data=Integer(128)
link(onEventData,8233292:doEvent1,[])
}
Add(Memory,13155387,231,133)
{
link(onData,234326:doSearch,[])
}
END_SDK
Add(LineBreak,6525385,308,448)
{
Caption="doTxt"
link(Out,15365421:doText2,[])
Primary=[5992494,126,-217]
}
Add(MultiElementEx,15450613,392,189)
{
@Hint=#24:Error message box reader|15:WinInfo version|
}
BEGIN_SDK
Add(EditMultiEx,569034,21,21)
{
WorkCount=#6:doData|
EventCount=#6:onCopy|
Width=412
link(doData,2459071:doWinInfo,[(109,27)(109,132)])
}
Add(MouseEvent,15165435,182,49)
{
Point(Handle)
}
Add(DoData,7830115,245,126)
{
link(onEventData,569034:onCopy,[(355,132)(355,27)])
link(Data,2459071:Caption,[(251,114)(230,114)(230,170)(209,170)])
}
Add(WinInfo,2459071,196,126)
{
link(onWinInfo,7830115:doData,[])
link(Handle,15165435:Handle,[])
}
END_SDK
Add(FormatStr,4856907,700,448)
{
DataCount=1
Mask="function run(){
sys.addcompiler("Delphi",""%fname%" "-U %opath%." -Q -F%1","%curdir%compiler\delphi\dcc32.exe","dpr");
sys.setcompiler("delphi","Delphi_DBG");
}"
link(onFString,9435683:doEvent1,[(737,454)(737,475)])
link(Str1,9456644:Var,[])
}
Add(HubEx,9898452,630,448)
{
link(onEvent,4856907:doString,[])
}
Add(StrList,9418387,770,448)
{
FileName="ifndbg.his"
}
Add(Hub,9435683,742,469)
{
OutCount=3
link(onEvent1,9418387:doText,[])
link(onEvent2,9418387:doSave,[(763,482)(763,489)])
link(onEvent3,8609104:doShellExec,[(763,489)(763,517)])
}
Add(Button,1448331,378,399)
{
Top=52
Width=329
Height=25
Align=4
Caption="Analize IT!"
link(onClick,15187644:doWork1,[(417,405)])
}
Add(LineBreak,7868499,378,483)
{
Type=1
link(Data,15365421:Text,[])
Primary=[9456644,322,-56]
}
Add(HubEx,15187644,413,448)
{
link(onEvent,14112223:doEvent,[])
}
Add(WinExec,8609104,770,504)
{
Param=" "
FileName="ifndbg.his"
}