zielbetriebssystem spezifische einstellungen [gelöst]

Für Fragen rund um die Ide und zum Debugger
Antworten
laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

zielbetriebssystem spezifische einstellungen [gelöst]

Beitrag von laz847 »

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?
Zuletzt geändert von laz847 am Di 31. Mär 2015, 00:44, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: zielbetriebssystem spezifische einstellungen

Beitrag von theo »

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?

Du hast sehr wahrscheinlich einen Fehler in deinem Code.
Zugriffsverletzungen entstehen eigentlich nicht durch veränderte Einstellungen.
Sie zeigen sich höchstens weniger direkt, was aber den Fehler nicht behebt.

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: zielbetriebssystem spezifische einstellungen

Beitrag von laz847 »

"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. :oops:

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?

ruewa
Beiträge: 153
Registriert: Sa 12. Apr 2014, 14:43

Re: zielbetriebssystem spezifische einstellungen

Beitrag von ruewa »

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?


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:

Code: Alles auswählen

movw   %ax, %cx        // MOV-Befehl in Wordbreite, Register Quelle, Register Ziel

Derselbe Befehl sieht in der Intel-Notation dann so aus:

Code: Alles auswählen

mov   cx, ax         // MOV-Befehl, Breite wird automatisch aus den Operanden erschlossen, Ziel, Quelle

Die Intel-Syntax ist einfach und unkompliziert, die AT&T-Syntax informationsreicher und dadurch vermutlich weniger fehleranfällig (Du mußt genauer sagen, was Du willst). Man gewöhnt sich an beides, ansonsten hat die AT&T-Notation einfach andere historische Wurzeln aus der UNIX-Welt, während die Intel-Syntax von Intel entwickelt wurde. Siehe hier: http://www.freepascal.org/docs-html/prog/progsu131.html#x148-1490003.2.2

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.

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: zielbetriebssystem spezifische einstellungen

Beitrag von laz847 »

Hi Rüdiger :D und Danke!

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.

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".

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).. :roll:

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?

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: zielbetriebssystem spezifische einstellungen

Beitrag von theo »

laz847 hat geschrieben:..und können nicht für irgendwelche Probleme verantwortlich sein?


Eher nicht. Eine Frage bleibt, warum du unter 64bit Linux für 32bit Windows entwickelst.
Aber einen direkten Zusammenhang mit einer Zugriffsverletzung hat das wahrsch. nicht.

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: zielbetriebssystem spezifische einstellungen

Beitrag von laz847 »

Eher nicht. Eine Frage bleibt, warum du unter 64bit Linux für 32bit Windows entwickelst.

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.

Warum, wieso, weiß ich heute nicht mehr, ich bin dann einfach dabei geblieben.

Aber einen direkten Zusammenhang mit einer Zugriffsverletzung hat das wahrsch. nicht.

Warum wahrscheinlich? Sag mal bitte was Du für Bedenken hast, evtl. finde ich ja so einen Anhaltspunkt?

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 :D) gesichert, aber dazu mehr wenn ich alle anderen Punkte ausgeschlossen habe :oops:.
Zuletzt geändert von laz847 am Sa 28. Mär 2015, 18:00, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: zielbetriebssystem spezifische einstellungen

Beitrag von theo »

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.

Bleibt die Frage warum Windows auf Linux?

laz847 hat geschrieben:Warum wahrscheinlich? Sag mal bitte was Du für Bedenken hast, evtl. finde ich ja so einen Anhaltspunkt?

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. :wink:

Gut, in diesem Falle könnte evtl. Wine einen Bug haben. Aber was soll ich dazu sagen?

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: zielbetriebssystem spezifische einstellungen

Beitrag von laz847 »

Bleibt die Frage warum Windows auf Linux?

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.

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.

Gut, in diesem Falle könnte evtl. Wine einen Bug haben. Aber was soll ich dazu sagen?

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! :D :cry:

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

Antworten