zielbetriebssystem spezifische einstellungen [gelöst]
zielbetriebssystem spezifische einstellungen [gelöst]
Was muss ich beachten, ich habe in meiner Software ab und an eine Access Violation die ich bisher nicht lokalisieren konnte, können falsche Einstellungen damit zu tun haben?
Lazarus 1.2.6 32bit läuft bei mir unter Qubes (Fedora + Wine) und Zielsystem ist Linux Mint 17.1 Cinnamon 64bit und auch da läuft meine Software unter Wine.
Ich habe festgestellt, dass ich die beste Performance mit folgenden Einstellungen erziele:
Ziel Betriebssystem : Win32
Ziel CPU Familie : i386
Zielprozessor : Pentium IV (-OpPENTIUM4)
Und bei Assembler Stil habe ich Intel anstatt AT&T eingestellt, die verwendete CPU ist ein i5-3550.
Ist das so korrekt?
Lazarus 1.2.6 32bit läuft bei mir unter Qubes (Fedora + Wine) und Zielsystem ist Linux Mint 17.1 Cinnamon 64bit und auch da läuft meine Software unter Wine.
Ich habe festgestellt, dass ich die beste Performance mit folgenden Einstellungen erziele:
Ziel Betriebssystem : Win32
Ziel CPU Familie : i386
Zielprozessor : Pentium IV (-OpPENTIUM4)
Und bei Assembler Stil habe ich Intel anstatt AT&T eingestellt, die verwendete CPU ist ein i5-3550.
Ist das so korrekt?
Zuletzt geändert von laz847 am Di 31. Mär 2015, 00:44, insgesamt 1-mal geändert.
Re: zielbetriebssystem spezifische einstellungen
Du hast sehr wahrscheinlich einen Fehler in deinem Code.laz847 hat geschrieben:Was muss ich beachten, ich habe in meiner Software ab und an eine Access Violation die ich bisher nicht lokalisieren konnte, können falsche Einstellungen damit zu tun haben?
Zugriffsverletzungen entstehen eigentlich nicht durch veränderte Einstellungen.
Sie zeigen sich höchstens weniger direkt, was aber den Fehler nicht behebt.
Re: zielbetriebssystem spezifische einstellungen
"Du hast sehr wahrscheinlich einen Fehler in deinem Code."
Davon gehe ich aus, da ich diesen aber seit Wochen nicht finde und auch keinen Anhaltspunkt habe wo und warum er auftritt, versuche ich erstmal alles andere auszuschließen. Es läuft tagelang einwandfrei bis es zu irgendeinem Fehler kommt der dann wieder tagelang oder wochenlang nicht auftritt. Da ich mit Threads arbeite, gestaltet sich das alles etwas schwieriger.
Laß ich es über den Debugger laufen bleibts einfach irgendwann stehen. Drück ich dann Pause und wieder Run gehts einfach weiter. Ohne Debugger stürzt mir unter Qubes irgendwann die VM ab (freeze) in der die Software läuft.
Unter Linux Mint wird eine Access Violation erzeugt, allerdings fehlen mir hier dann jegliche Infos wo, wann, warum. Mein Logfile bleibt leer, keine meine Überprüfungen meldet irgendeinen Fehler oder sie sind nicht mehr in der Lage diesen auszugeben wenn er auftritt. Ich werde aber dazu einen seperaten Thread eröffnen.
Es wäre sehr ärgerlich und peinlich wenn am Ende doch "nur" eine falsche Einstellung die Ursache war.
Du sagst also das paßt alles so?
"habe ich Intel anstatt AT&T eingestellt"
Orginal ist ja AT&T eingestellt, ist das richtig so das ich es auf Intel umgestellt habe, is ja schließlich ne Intel CPU?
Davon gehe ich aus, da ich diesen aber seit Wochen nicht finde und auch keinen Anhaltspunkt habe wo und warum er auftritt, versuche ich erstmal alles andere auszuschließen. Es läuft tagelang einwandfrei bis es zu irgendeinem Fehler kommt der dann wieder tagelang oder wochenlang nicht auftritt. Da ich mit Threads arbeite, gestaltet sich das alles etwas schwieriger.
Laß ich es über den Debugger laufen bleibts einfach irgendwann stehen. Drück ich dann Pause und wieder Run gehts einfach weiter. Ohne Debugger stürzt mir unter Qubes irgendwann die VM ab (freeze) in der die Software läuft.
Unter Linux Mint wird eine Access Violation erzeugt, allerdings fehlen mir hier dann jegliche Infos wo, wann, warum. Mein Logfile bleibt leer, keine meine Überprüfungen meldet irgendeinen Fehler oder sie sind nicht mehr in der Lage diesen auszugeben wenn er auftritt. Ich werde aber dazu einen seperaten Thread eröffnen.
Es wäre sehr ärgerlich und peinlich wenn am Ende doch "nur" eine falsche Einstellung die Ursache war.

Du sagst also das paßt alles so?
"habe ich Intel anstatt AT&T eingestellt"
Orginal ist ja AT&T eingestellt, ist das richtig so das ich es auf Intel umgestellt habe, is ja schließlich ne Intel CPU?
Re: zielbetriebssystem spezifische einstellungen
Das hat mit der CPU nichts zu tun. "AT&T" bzw. "Intel" bezeichnet beim Assembler einfach die unterschiedliche Sprach-Syntax, sozusagen den "Dialekt", mit dem Du den Code schreiben mußt. Wenn Du z.B. den Inhalt des Registers AX nach CX kopieren willst, wird das in der AT&T-Syntax so notiert:laz847 hat geschrieben:"habe ich Intel anstatt AT&T eingestellt"
Orginal ist ja AT&T eingestellt, ist das richtig so das ich es auf Intel umgestellt habe, is ja schließlich ne Intel CPU?
Code: Alles auswählen
movw %ax, %cx // MOV-Befehl in Wordbreite, Register Quelle, Register Ziel
Code: Alles auswählen
mov cx, ax // MOV-Befehl, Breite wird automatisch aus den Operanden erschlossen, Ziel, Quelle
Aber brauchst Du das überhaupt? Deine Fragestellung läßt vermuten, daß Du nicht selbst Assembler-Code schreibst. Dann kann Dir das völlig egal sein, denn der Compiler weiß sowieso, was er zu tun hat. Mit der Compileranweisung {$ASMMODE att / intel} sagst Du dem Compiler nur, nach welcher Syntax er Deine selbstgeschriebenen Assembler-Codeblöcke interpretieren soll. Du kannst sie setzen oder auch nicht, das macht, solange Du nur Pascal-Code schreibst, keinen Unterschied.
Gruß Rüdiger
Zuletzt geändert von ruewa am Sa 28. Mär 2015, 17:34, insgesamt 1-mal geändert.
Re: zielbetriebssystem spezifische einstellungen
Hi Rüdiger
und Danke!
Danke für die ausführliche Erklärung, diese Zusammenhänge fehlten mir.
Ich habe mir alles selbst über HTML > Javascript > PHP/CGI > Delphi > Lazarus mit "learning by doing" beigebracht, habe weder eine Ausbildung in diesem Bereich,
noch kenne ich jemanden den ich fragen könnte (ausser in Foren)..
Bin Euch allen hier unendlich dankbar!
Fazit: Meine Einstellungen sollten so passen und können nicht für irgendwelche Probleme verantwortlich sein?
Zielprozessor : Pentium IV (-OpPENTIUM4)
Warum gibts da keine neueren Prozessormodelle zur Auswahl?

Nein aktuell verwende ich nur Pascal Code, Assembler will ich noch lernen + verstehen lernen, bisher bin ich an diesem Thema immer wieder nur "vorbei geschlichen".Aber brauchst Du das überhaupt? Deine Fragestellung läßt vermuten, daß Du nicht selbst Assembler-Code schreibst. Dann kann Dir das ohnehin egal sein, denn der Compiler weiß sowieso, was er zu tun hat. Mit der Compileranweisung {$ASMMODE att / intel} sagst Du dem Compiler nur, nach welcher Syntax er Deine selbstgeschriebenen Assembler-Codeblöcke interpretieren soll. Du kannst sie setzen oder auch nicht, das macht, solange Du nur Pascal-Code schreibst, keinen Unterschied.
Danke für die ausführliche Erklärung, diese Zusammenhänge fehlten mir.
Ich habe mir alles selbst über HTML > Javascript > PHP/CGI > Delphi > Lazarus mit "learning by doing" beigebracht, habe weder eine Ausbildung in diesem Bereich,
noch kenne ich jemanden den ich fragen könnte (ausser in Foren)..

Bin Euch allen hier unendlich dankbar!
Fazit: Meine Einstellungen sollten so passen und können nicht für irgendwelche Probleme verantwortlich sein?
Zielprozessor : Pentium IV (-OpPENTIUM4)
Warum gibts da keine neueren Prozessormodelle zur Auswahl?
Re: zielbetriebssystem spezifische einstellungen
Eher nicht. Eine Frage bleibt, warum du unter 64bit Linux für 32bit Windows entwickelst.laz847 hat geschrieben: ..und können nicht für irgendwelche Probleme verantwortlich sein?
Aber einen direkten Zusammenhang mit einer Zugriffsverletzung hat das wahrsch. nicht.
Re: zielbetriebssystem spezifische einstellungen
Als ich vor einigen Monaten Lazarus erstmals installiert habe um mich mit dll's zu beschäftigen, habe ich da irgendwo einen Hinweis gesehen das ich dazu unbedingt die 32 bit Version nutzen soll.Eher nicht. Eine Frage bleibt, warum du unter 64bit Linux für 32bit Windows entwickelst.
Warum, wieso, weiß ich heute nicht mehr, ich bin dann einfach dabei geblieben.
Warum wahrscheinlich? Sag mal bitte was Du für Bedenken hast, evtl. finde ich ja so einen Anhaltspunkt?Aber einen direkten Zusammenhang mit einer Zugriffsverletzung hat das wahrsch. nicht.
Meine Memory Mapped Files werden vom Metatrader 4 (MQL4) erstellt und aktualisiert, meine Software (Lazarus) greift dann (immer nur lesend) auf diese Memory Mapped Files zu und liest die Daten von dort ein.
Diese Schreib / Lese Zugriffe sind über Mutexen (is so die Mehrzahl


Zuletzt geändert von laz847 am Sa 28. Mär 2015, 18:00, insgesamt 1-mal geändert.
Re: zielbetriebssystem spezifische einstellungen
Bleibt die Frage warum Windows auf Linux?laz847 hat geschrieben: Als ich vor einigen Monaten Lazarus erstmals installiert habe um mich mit dll's zu beschäftigen, habe ich da irgendwo einen Hinweis gesehen das ich dazu unbedingt die 32 bit Version nutzen soll.
Das ist einfach mein Stil. Wenn ich schreibe: "Hat unter gar keinen Umständen damit zu tun", kommt bestimmt ein Schlaumeier und zeigt einen Umstand auf, wo es doch damit zu tun hat. Reine Gewohnheit um langweilige Spezialfälle auszuklammern.laz847 hat geschrieben: Warum wahrscheinlich? Sag mal bitte was Du für Bedenken hast, evtl. finde ich ja so einen Anhaltspunkt?

Gut, in diesem Falle könnte evtl. Wine einen Bug haben. Aber was soll ich dazu sagen?
Re: zielbetriebssystem spezifische einstellungen
Das Entwicklungssystem läuft wie gesagt auf Qubes https://wiki.qubes-os.org/, in diesem werden VM's verwendet, die alle auf einem Fedora-Template beruhen.Bleibt die Frage warum Windows auf Linux?
Ich müsste also Lazarus im Template installieren und es wäre damit auf allen virtuellen Maschinen installiert, ich brauche Lazerus jedoch nur in einer.
Wine im Template machte mehr Sinn weil ich es auf einigen Maschinen brauche und Lazarus nur in der einen virtuellen Maschine als exe zu installieren, erschien mir sinnvoller? (wine wird dann immer beim Template-Update aktualisiert)
Ausserdem war lange unklar welches Betriebssystem dann im laufenden Betrieb verwenden wird, Qubes war damals noch Beta und teilweise instabil.
Auf Win32 zu gehen erlaubt mir Windows (notfalls, ist mir zu unsicher) oder irgendein Linux mit Wine auszuweichen.
Und ich kann aus der IDE direkt die exe starten, ohne grosse Änderungen machen zu müssen oder alles mögliche im Template zu installen, läuft das so eigentlich super.
Und genau das (oder ein Qubes/Xen/Mint Bug) hoffe ich nicht, wenn sich so etwas am Ende rausstellt, weiß ich nicht ob ich lachen oder heulen soll!Gut, in diesem Falle könnte evtl. Wine einen Bug haben. Aber was soll ich dazu sagen?


Ich gehe aber natürlich erstmal davon aus das der Fehler in meinem Code liegt.