AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge EAccessViolation sporadisch beim Beenden eines Programms
Thema durchsuchen
Ansicht
Themen-Optionen

EAccessViolation sporadisch beim Beenden eines Programms

Ein Thema von RWarnecke · begonnen am 28. Jul 2012 · letzter Beitrag vom 4. Aug 2012
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

EAccessViolation sporadisch beim Beenden eines Programms

  Alt 28. Jul 2012, 09:40
Hallo zusammen,

ich habe für einen Kunden ein Update von einem Programm erstellt. Das funktioniert auch soweit ganz gut. Leider gibt es einen Rechner beim Kunden, der immer mal wieder sporadisch die im Anhang befindliche Fehlermeldung ausgibt, wenn das Programm beendet wird.

Wie bekomme ich anhand dieser Fehlermeldung raus, wo der Fehler ist ?
Miniaturansicht angehängter Grafiken
clipboard01.jpg  
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 28. Jul 2012, 10:30
Hallo,

in der JVCL gibt es eine Komponente, die man in die Fehlerbehandlung einklinken kann. (Wie das geht, weiß ich nicht mehr so genau und habe momentan auch keine Zeit, da nachzuschauen). Sie benötigt u. a. eine ausführliche MAP-Datei zum Programm und man kann dann die Fehler in eine Textdatei protokollieren. Dort findet man recht genaue Informationen zur Fehlerquelle, teilweise mit Angaben zur Unit, in der der Fehler auftrat, mit ein bisserl Glück sogar die Angabe der Quelltextzeile +/- ein paar Zeilen.

Hab' mal eine Logdatei, aus einem Programm, das die Routinen nutzt, hier drangepappt. Die meisten Fehler sind Datenbankfehler, aber der Rest könnte beim Ideenfinden helfen.

Es müsste auch ein Beispielprogramm bei der JVCL geben, dass Du eventuell als Anhaltspunkt nehmen könntest:
Code:
\jcl\examples\windows\debug\stacktrack\StackTrackExample.dpr

Geändert von nahpets (21. Nov 2017 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.312 Beiträge
 
Delphi 12 Athens
 
#3

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 29. Jul 2012, 08:21
Moin...

sporadisch ist immer eklig. Fehlertechnisch sieht es so aus daß du auf ein Objekt zugreifst was entweder nicht existiert hat oder nicht mehr existiert.

Deine Freunde sind MadExcept / EurekaLog
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.227 Beiträge
 
Delphi 12 Athens
 
#4

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 29. Jul 2012, 11:50
Das "Problem" ist ja, daß freigegebener Speicher nicht immer sofort "wirklich" freigegeben, also an Windows zurückgegeben wird.
FastMM reserviert größere Speicherblöcke und gibt diese in kleineren Stückchen ans Programm weiter, um dadurch die Speichervewaltung zu beschleunigen.

Es kann also sein, daß Speicher noch vorhanden ist und dieser zwischenzeitlich noch nicht von was anderem überschrieben wurde, womit es "zufällig" passieren kann, daß ein Zugriff auf etwas doch noch "funktioniert, obwohl es eigentlich nicht mehr da ist .... jenachdem ob der Speicher doch freigegeben oder überschrieben wurde.



Man kann FastMM auch so einstellen, daß freigegebener Speicher zumindestens überschrieben wird, damit spätere Zugriffe erkannt werden, weil ja nun die Datenstrucktur zerstört ist und genauso kann FastMM nun erkennen, ob man in Speicher, nach dessen Freigabe, was reinschreibt (Bufferoverruns und Schreibzugriffe nach Freigabe).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jul 2012 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 4. Aug 2012, 20:47
Hallo zusammen,

ich habe heute Abend den Fehler gefunden. Es war die Komponente Eurekalog 7.0.1, die den Fehler verusachte. Nachdem ich Eurekalog deaktiviert hatte im Projekt war die EAccessViolation zumindest auf meinem Rechner nicht mehr vorhanden. Jetzt werde ich das noch auf dem Rechner des Kunden ausprobieren. Ich bin aber großer Zuversicht, dass es auch da funktioniert.

Gruß
Rolf
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 4. Aug 2012, 20:49
Pradox, ein Tool, dass Fehler aufdecken hilft, hat anscheinend in diesem Fall den Fehler selber verursacht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 4. Aug 2012, 20:54
Das ist ja das schlimme. Ich werde nach dem Test beim Kunden mal die alte Eurekalog Version 6.1.4 ausporbieren, ob dann das gleiche Problem auftritt, da das Programm noch unter Delphi 2010 entwickelt wird.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz