EAccessViolation
-
Hallo Zusammen,
ich suche nach Lösungen zu diesem Problem, aber aus den Beiträgen, die es zu diesem Thema schon gibt, werd ich nicht schlau draus.
Ich benutze die Borland Version 5.0
Ich habe ein Programm geschrieben, mit dem man über CAN eine Pheripherie steuern kann. D.h. es werden Funktionen aus einer DLL benutzt.
Dies Funtkioniert in diesem Programm ganz gut.Nun wollte ich die gleichen Funktionen in ein anderes Programm mit einbinden.
D.h. gleiche Implementierung wie im alten Programm.
Doch nun bekomm ich beim Öffnen der USB-Schnittstelle,
an der ein USB-Can-Adapter angeschlossen ist, die Fehlermeldung:EAccessViolation: Zugriffsverletzung bei Adresse .....usw.
Wenn ich im Debugmode durch die Funktion stepe, mit der die USB-Schnittstelle geöffnet wird,
sehe ich das die Funktion korrekt ausgeführt wurde und es wird auch tatsächlich die Schnittstelle geöffnet.Nun weiß ich nicht mehr weiter, vlt. hat jemand nen Tipp?
-
Das Problem ist wohl, dass eine Zugriffsverletzung so ziemlich alles sein kann, wenn Fehler im Code sind (möglicherweise unbekannte Laufzeitfehler - nicht ersichtliche, zum Beispiel Zugriff auf etwas, was nicht existiert).
Eventuell wäre etwas Code nicht schlecht, an der Stelle wo der Fehler auftritt, vielleicht finden wir ja markante Stellen an den es Probleme geben kann.Sonst kommt sicher nicht so schnell eine Antwort (LessInformationError bei Helfern :D).
PS: klingt einigermaßen strange, wenn er wirklich den USB findet.
-
mr_crabs schrieb:
Nun weiß ich nicht mehr weiter, vlt. hat jemand nen Tipp?
Debugger benutzen.
-
mr_crabs schrieb:
Wenn ich im Debugmode durch die Funktion stepe, mit der die USB-Schnittstelle geöffnet wird,
sehe ich das die Funktion korrekt ausgeführt wurde und es wird auch tatsächlich die Schnittstelle geöffnet.audacia schrieb:
mr_crabs schrieb:
Nun weiß ich nicht mehr weiter, vlt. hat jemand nen Tipp?
Debugger benutzen.
Wat'n Tipp
-
Der Debugger kann mehr als die Einzelschrittausführung. Die Beachtung des Aufruf-Stacks und das Inspizieren der lokalen Variablen direkt nach dem Auftreten der AV kann sehr zielführend sein.
-
Hallo,
ich weiß! Aber dann solltest du es vielleicht dazu erwähnen. Die Antwort "Debugger benutzen" auf die sinngemäße Aussage "Ich habe den Debugger genutzt" zieht Witziges nach sich
VlG
-
Vielleicht kann audacia aus den bisherigen Posts von Spongebobs Arbeitgeber ableiten, dass dieser die Funktionsvielfalt des Debuggers noch nicht ergründet hat?
-
Hört auf, ich mach mir gleich in die Hose...
-
@Joe_M:
Schöner kann man diesen Satz nun wirklich nicht formulierenAber ich muss zugeben, dass ich in Bezug des Debuggers noch ein bisschen mehr
Informationen und Wissen mir aneignen muss.Lustig ist nur, dass ich im anderen Projekt mit der gleichen Implemetierung keine Probleme habe.
Falls jemand noch ne Idee oder gar die Lösung hat (LOL) der bekommt nen Krabbenburger zum halben Preis
-
mr_crabs schrieb:
Aber ich muss zugeben, dass ich in Bezug des Debuggers noch ein bisschen mehr
Informationen und Wissen mir aneignen muss.Das ist die richtige Einstellung.
Du könntest beginnen mit dem Tutorial von junix. Danach bietet auch die C++Builder-Dokumentation dem Lernwilligen jede Menge Informationen zum Debugger und dem produktiven Einsatz desselbigen. Hier schließlich findest du eine Übersicht über die verschiedenen Debugger-Ansichten, etwa den Aufruf-Stack.
-
Joe_M. schrieb:
Vielleicht kann audacia aus den bisherigen Posts von Spongebobs Arbeitgeber ableiten, dass dieser die Funktionsvielfalt des Debuggers noch nicht ergründet hat?
Blöd nur dass dieser Thread nich nur von Spongebobs Arbeitgeber - der die Strukturen seiner eigenen Threads kennt - gelesen wird und zukünftige Leser - die das gleiche Problem haben könnten - mit "Debugger benutzen" reichlich wenig anfangen können. Man wird doch immer auf die Forensuche hingewiesen
Wenn man dann in so einem Thread landet kann das schon doll frustrierend sein :p Ab und an denk ich, kann man schon etwas ausschweifender werden und den "Patienten" nicht nur aus dem Forum raus, direkt zur nächsten Suchmaschine schubsen :p
Sei's drum, dem Hilfesuchenden wurde schlussendlich doch noch - naja sagen wir mal: geholfen, und er wird sein Problem sicher lösen können
VlG
-
@Random
Hast recht, ich hätte diesen Thread einen anderen Namen geben sollen. Das nächste Mal werd ich dran denkenHab mich in letzter Zeit mit dem Thema Debuggen beschäftigt, bin jetzt ein bisschen schlauer als vorher, doch mein Porblem besteht teilweise immer noch.
Sobald ich eine der Funktionen aus der DLL ausführe, erscheint eine
Exception der Klasse: C0000005. Zugriffverletztung bei...usw.Führe ich die Funktion aus einem Button Klick Event aus, so werden die Funktionen ohne Fehlermeldung ausgeführt.
Ohne Klick event kommt es zur Fehlermeldung.
Wie kann ich das Verstehen? Wo kann ich danach suchen?
-
Hallo,
dafür muss man den Quellcode kennen! Sobald die Funktion bekannt ist sollte sie ausgeführt werden können
Vielleicht stellst du uns den relevanten Teil zur Verfügung...
VlG