Ich habe doch noch zweie Rückfragen, nach dem ich mir heute das Logfile der über den AppStore ausgelieferten Version angeschaut habe.
a) Was genau ist noch zu tun, damit das StackTrace auch die richtigen Code-Infos liefert?
Im Debug-Modus ist dies der Fall, im Release-Modus nicht. In beiden Konfiguration ist Map-File auf "Off" gestellt.
Ist schwierig zu testen, weil man dafür jedes Mal eine Auslieferung für den AppStore benötigt.
Ich habe die Compiler-Settings als Screenshot angehängt. Reicht da vielleicht "Symbol reference info" schon aus?
Im Release Modus:
Code:
TestException
At address: $00000001110A0EAD (TMethodImplementationIntercept + 16335597)
Call stack:
icTrainer $000000011118FD43 TMethodImplementationIntercept + 17314179
icTrainer $000000011001262D SignalConverter + 3405
icTrainer $0000000110035930 SignalConverter + 147536
icTrainer $000000010FFFB085 @DbgExcNotify + 357
icTrainer $000000010FFFB185 @DbgExcNotify + 613
icTrainer $00000001110A0EAD TMethodImplementationIntercept + 16335597
icTrainer $0000000110370160 TMethodImplementationIntercept + 2504096
icTrainer $00000001103E7BD9 TMethodImplementationIntercept + 2994201
icTrainer $0000000110435D7E TMethodImplementationIntercept + 3314110
icTrainer $000000011057EC6E TMethodImplementationIntercept + 4661422
icTrainer $000000011057F57A TMethodImplementationIntercept + 4663738
icTrainer $000000011056FCD3 TMethodImplementationIntercept + 4600083
icTrainer $00000001111AD2DF TMethodImplementationIntercept + 17434399
AppKit $00007FFF22E4A578 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 6482
AppKit $00007FFF22E48A06 -[NSWindow(NSEventRouting) sendEvent:] + 347
AppKit $00007FFF22E47881 -[NSApplication(NSEvent) sendEvent:] + 3021
AppKit $00007FFF2311FBE1 -[NSApplication _handleEvent:] + 65
AppKit $00007FFF22CAFC8E -[NSApplication run] + 623
icTrainer $00000001111AD0E2 TMethodImplementationIntercept + 17433890
icTrainer $000000011056B49D TMethodImplementationIntercept + 4581597
Im Debug Modus:
Code:
TestException
At address: $0000000103054C86 (Myictrainer.TicTrainerF.eLicenceKeyKeyUp(TObject*, var Word, var Char, set of Classes.System_Classes__1) + 1286)
Call stack:
icTrainer $00000001031A6B78 Myerrorreporting.TgoExceptionReporter.GlobalGetExceptionStackInfo(TExceptionRecord*) + 136
icTrainer $000000010190DC61 Sysutils.Exception.RaisingException(TExceptionRecord*) + 65
icTrainer $000000010193D14B Sysutils.RaiseExceptObject(TExceptionRecord*) + 59
icTrainer $00000001018EE425 _RaiseAtExcept(TObject*, Pointer) + 69
icTrainer $00000001018EE539 _RaiseExcept(TObject*) + 25
icTrainer $0000000103054C86 Myictrainer.TicTrainerF.eLicenceKeyKeyUp(TObject*, var Word, var Char, set of Classes.System_Classes__1) + 1286
icTrainer $0000000101DD0FBB Fmx.Controls.TControl.KeyUp(var Word, var Char, set of Classes.System_Classes__1) + 107
icTrainer $0000000101E7485E Fmx.Controls.Presentation.TPresentedControl.KeyUp(var Word, var Char, set of Classes.System_Classes__1) + 62
icTrainer $0000000101EDF4BD Fmx.Forms.TCommonCustomForm.KeyUp(var Word, var Char, set of Classes.System_Classes__1) + 109
icTrainer $00000001020ABD89 Fmx.Platform.Mac.DoKeyUp(TObject*, Fmx.Forms.TCommonCustomForm*, Word, Char, set of Classes.System_Classes__1) + 185
icTrainer $00000001020ACAD3 Fmx.Platform.Mac.TPlatformCocoa.KeyProc(TObject*, Fmx.Forms.TCommonCustomForm*, Macapi.Appkit.NSEvent, Boolean, Boolean) + 1283
icTrainer $0000000102096A23 Fmx.Platform.Mac.TFMXViewBase.keyUp(Macapi.Appkit.NSEvent) + 227
icTrainer $00000001031BC2DF DispatchToDelphi + 209
AppKit $00007FFF22E4A578 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 6482
AppKit $00007FFF22E48A06 -[NSWindow(NSEventRouting) sendEvent:] + 347
AppKit $00007FFF22E47881 -[NSApplication(NSEvent) sendEvent:] + 3021
AppKit $00007FFF2311FBE1 -[NSApplication _handleEvent:] + 65
AppKit $00007FFF22CAFC8E -[NSApplication run] + 623
icTrainer $00000001031BC0E2 DispatchToImport + 226
icTrainer $000000010208FDD8 Fmx.Platform.Mac.TPlatformCocoa.Run() + 184
b) Kann man aus der Info
icTrainer $0000000103054C86 Myictrainer.TicTrainerF.eLicenceKeyKeyUp(TObject*, var Word, var Char, set of Classes.System_Classes__1) + 1286
auch die tatsächliche Stelle im Code auslesen?
Code:
procedure TicTrainerF.eLicenceKeyKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
{$IFNDEF ANDROID}
if (lowercase(eLicenceKey.text) = 'delete') then
begin
testModus:=True;
eLicenceKey.text:='';
{$IF defined(MACOS) or defined(GOOGLE) or defined(MSWINDOWS)}
firstRestorePurchased:=False;
{$IFDEF MACOS}
newestRenewLicenceDate:=0;
{$ENDIF}
{$ENDIF}
System.SysUtils.deleteFile(appPathRef + TStringUtils.getLicenceFileName());
System.SysUtils.deleteFile(appPathRef + 'icTrainer.icll');
displayTestModusInfo();
exit;
end else if (lowercase(eLicenceKey.text) = '
exception') then
raise
Exception.create('TestException');
{$ENDIF}
end;