Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   XE4 ARC Problem / Debuginfos ausgeben (https://www.delphipraxis.net/174752-xe4-arc-problem-debuginfos-ausgeben.html)

arnof 7. Mai 2013 20:42

XE4 ARC Problem / Debuginfos ausgeben
 
Hallo,

ich habe eine komplexe Komponente, nun auf Firemonkey umgeschrieben (Bitmap Vektorisierung). Unter Windows und Mac OSX läufts so wie es soll!

Unter IOS fliegt mir die Anwendung um die Ohren mit Schutzverletzungen! Ich habe hier das ARC in verdacht, da in der Komponente mit sehr vielen Objekten gearbeitet wird, die auch noch wieder manuell freigegeben werden (FREE und NIL).

Im Debugger sehe ich das es beim Freigeben die Schutzverletzung gibt, leider kann ich nicht genau feststellen wann und wo das passiert, da das so tief geschachtelt ist das das APP im Schritt für Schritt Modus im Simulator zu macht, bevor ich an die eigentliche Stelle komme.


Nun meine Frage kann ich irgenwie eine Debugmeldung ausgeben, so das ich diese in Delphi sehen könnte oder geht das nur mit Instruments :?:

RWarnecke 8. Mai 2013 05:00

AW: XE4 ARC Problem / Debuginfos ausgeben
 
OutputDebugString heißt der Befehl, damit tauchen die Meldungen im Event Log der IDE auf.

Union 8. Mai 2013 07:27

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Zitat:

Zitat von RWarnecke (Beitrag 1214638)
OutputDebugString heißt der Befehl, damit tauchen die Meldungen im Event Log der IDE auf.

Und die Windows-Funktion OutputDebugString läuft unter iOS? Witzig, das wusste ich ja noch gar nicht ;)

Ich meine, dass die NSLog wäre, z.b:
Delphi-Quellcode:
NSLog(NSStr(PChar(Format('Windows: %d', [UIApplication.sharedApplication.Windows.Count]))));

RWarnecke 8. Mai 2013 10:40

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Ich habe es jetzt nicht direkt ausprobiert. Aber da der Befehl nur Messages ins Eventlog der IDE schreibt, warum sollte der nicht funktionieren.

Zitat:

Zitat von Union (Beitrag 1214650)
Ich meine, dass die NSLog wäre, z.b:
Delphi-Quellcode:
NSLog(NSStr(PChar(Format('Windows: %d', [UIApplication.sharedApplication.Windows.Count]))));

Das wäre doch das Device-Log, welches ich in XCode einsehen kann. :?::?::?:

daywalker9 8. Mai 2013 12:05

AW: XE4 ARC Problem / Debuginfos ausgeben
 
OutputDebugString ist aber eine Windows-API Funktion (daher nicht verfügbar auf iOS). Jedes Windows Programm kann diese Nachrichten empfangen.

arnof 8. Mai 2013 14:38

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Zitat:

Zitat von daywalker9 (Beitrag 1214709)
OutputDebugString ist aber eine Windows-API Funktion (daher nicht verfügbar auf iOS). Jedes Windows Programm kann diese Nachrichten empfangen.

Stimmt, ich kanns nicht starten, da er dieses nicht kennt unter ios bzw. macosx :?

Was muss man in die uses nehmen, damit nslog geht :?:

Daniel 8. Mai 2013 14:44

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Olaf hat ein NSLog implementiert und eine Unit dafür erstellt. Nähere Infos in seinem Blog:

http://www.monien.net/blog/

Union 8. Mai 2013 16:25

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Zitat:

Zitat von arnof (Beitrag 1214725)
Was muss man in die uses nehmen, damit nslog geht :?:

iOSApi.Foundation

arnof 18. Mai 2013 12:16

AW: XE4 ARC Problem / Debuginfos ausgeben
 
Falls das Thema noch jemanden interessiert hier erstmal die Lösung:

NSLog((NSStr('Hallo Welt') As ILocalObject).GetObjectID);


Benötigte Units:

iOSapi.Foundation,MacAPI.ObjectiveC

Wo sieht man die Ausgabe: im XCODE Organiser -> Geräteconsole


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz