Entwickler-Ecke

Programmierwerkzeuge - Programm läuft als 32bit aber nicht als 64bit


patmann2001 - Di 20.10.15 15:47
Titel: Programm läuft als 32bit aber nicht als 64bit
Hallo,

ich habe ein Programm mit Delphi XE2 geschrieben. Es läuft auf meinem Win7 64bit Rechner sowohl als 32bit als auch als 64bit Variante.
Auf dem eigentlichen Zielsystem, ebenfalls Win7 64bit startet aber nur die 32bit Version. Bei der 64bit Version wird das Hauptfenster erzeugt und dann beendet das Windows mein Programm mit der Fehlermeldung:
Zitat:
a problem caused the program to stop working correctly. please close the program

Ich bekomme keine Fehlermeldung vom Programm selber. Würde eine Exception auftretten, würde diese in ein Logfile geschrieben. Das funktioniert einwandfrei, jedoch das LogFile ist leer.

Jemand eine Idee?

lg Patmann


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 20.10.2015 um 22:13


baumina - Di 20.10.15 15:53

Wahrscheinlich fehlt irgendeine 64-bit-dll auf dem Zielrechner, bzw. ist eine andere als bei dir.


patmann2001 - Di 20.10.15 15:55

Hallo baumina

Das klingt gut,

wie kriege ich das jetzt raus?

lg


Delete - Di 20.10.15 15:59

Wenn man seinen Programmen und DLLs ordentliche Namen gibt, muss man nicht lange suchen:

Demoname32.exe
Demoname64.exe
Demoname32.dll
Demoname64.dll


baumina - Di 20.10.15 16:01

Was benutzt du denn für dlls? Ist es evtl. eine Datenbankanwendung, die eine DLL benutzt?


patmann2001 - Di 20.10.15 16:03

Hallo,

ich habe keine DLL eingebunden. Ich verwende ausschließlich XE2 Standartkomponenten. Ich habe auch ein weiteres Programm, das sowohl 32 bit als auch 64 bit ist und das auf beiden Rechnern in beiden Versionen läuft.

Deshalb bin ich ja so verwirrt.

Was wirklich schwierig ist, daß man keine Fehlermeldung finden kann. Das Programm wird einfach beendet.

lg
Patmann


GuaAck - Di 20.10.15 16:24

Hallo,

mir hatte vor ein paar Jahren mal das Programm http://www.dependencywalker.com/ geholfen. Das listet übersichtlich alle vom Programm benötigtene DLLs auf. Vielleicht erkennt man ja, was fehlt, evtl. durch Vergleich mit einem laufenden Programm.

Gruß
GuaAck


Martok - Di 20.10.15 16:59

user profile iconpatmann2001 hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
a problem caused the program to stop working correctly. please close the program

Ich bekomme keine Fehlermeldung vom Programm selber.
Diese Fehlermeldungsdialoge haben einen Details-Knopf irgendwo (ggf. bei Windows 7 noch hinter "Problembericht senden" versteckt), da steht dann auch der Fehlercode und -Modul drin...


Delete - Di 20.10.15 19:43

user profile iconpatmann2001 hat folgendes geschrieben Zum zitierten Posting springen:
Jemand eine Idee?

Was du noch machen könntest:

  1. Statt der Release- die Debug-Version deines 64-Bit-Kompilats auf dem problematischen Rechner zu starten versuchen. Eventuell werden damit Fehlermeldungen angezeigt.
  2. Vor dem Kompilieren MessageBoxes mit anschließendem Application.ProcessMessages einbauen, um zu sehen, wie weit das Programm kommt bzw. wo genau es abstürzt.
  3. Das Logfile bei jeder Fehlermeldung, die der Liste hinzugefügt wird, sofort speichern, da es beim Absturz vermutlich nicht mehr gespeichert wird.


Palladin007 - Di 20.10.15 19:48

Um an Fehler-Infos zu kommen, könnte auch die Zuverlässigkeitsüberwachung helfen.
Einfach mal im Windows nach "Zuverlässigkeitsüberwachung" suchen, es müsste ein Programm gefunden werden, das so oder so ähnlich heißt.
Das listet Fehler und Informationen mit detailierten Infos nach dem Datum auf.
Deine Fehlermeldung müsste dort auch zu finden sein, dort landen auch die Details, die Martok meint.


Martok - Mi 21.10.15 00:00

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
Um an Fehler-Infos zu kommen, könnte auch die Zuverlässigkeitsüberwachung helfen.
Das kannte ich noch nicht, danke!

Die Ereignisanzeige loggt in der Kategorie "Anwendung" die gleichen Informationen, aber weniger schön aufbereitet.


Delete - Mi 21.10.15 07:18

"zuverlässig" oder "relia" im Suchfeld eingeben...oder:
Systemsteuerung\Alle Systemsteuerungselemente\Wartungscenter\Zuverlässigkeitsüberwachung


patmann2001 - Mi 21.10.15 14:21

Hallo,

erstmal vielen Dank für die vielen Vorschläge.

Über die "Zuverlässigkeitsüberwachung" habe ich es zuerst probiert. Da kommt zwar eine Fehlermeldung in Modul blablabla und eine schöne Kryptische Zahl bei raus.


Quelltext
1:
2:
Exception code: 0xc0000005
Fault offset: 0x000000000000e21d

Die Hilft mir aber leider nicht weiter. Dann habe ich es mit dem "Dependency Walker" versucht. Ein schönes Programm, leider findet es sowohl in der 64bit Version als auch in der 32bit Version die gleichen fehlenden DLL. Nach den DLL's habe ich auch Gegoogled, aber nichts hilfreiches gefunden:

Zitat:

API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
IESHIMS.DLL

Was ich persönlich sehr seltsam finde ist, daß die 32bit Version vom Walker mit Error makiert wird, jedoch die 64bit nur mit Warning.

Ich habe natürlich inzw. auch Debug and Release Versionen probiert. Ich habe immer das selbe Resultat. Nur eben das Debug Version immer deutlich größer sind, wegen der Debug Info die im Release nicht erstellt wird.

Natürlich speichert mein Fehlerhandler immer sofort.

Ich werde jetzt noch den Code mit anpassen wie es "Perlsau" vorgeschlagen hat und mich dann noch einmal melden.

lg
Patmann


Martok - Mi 21.10.15 14:37

user profile iconpatmann2001 hat folgendes geschrieben Zum zitierten Posting springen:
Über die "Zuverlässigkeitsüberwachung" habe ich es zuerst probiert. Da kommt zwar eine Fehlermeldung in Modul blablabla und eine schöne Kryptische Zahl bei raus.


Quelltext
1:
2:
Exception code: 0xc0000005
Fault offset: 0x000000000000e21d
Vier Zeilen weiter (Edit: und direkt davor) wäre dann die spannende Information, nämlich der Pfad des fehlerhaften Moduls.


patmann2001 - Mi 21.10.15 14:42

Hallo Martok,

dort steht, daß das fehlende Modul im Pfad des Programmes sein soll. Ich habe aber dort keine DLL's. Werder bei 32 noch bei 64bit.

lg Jens