AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stelle der Zugriffsverletzung finden

Ein Thema von Viktorii · begonnen am 20. Apr 2009 · letzter Beitrag vom 20. Apr 2009
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 09:03
Hallo zusammen.

Ich habe mir eine DLL geschrieben mit der ich auf ein USB Gerät zugreifen kann. Desweiteren habe ich mir eine Software geschrieben welche diese DLL benutzt.

Jetzt bekomme ich unter ganz bestimmten (reproduzierbaren) Umständen eine Zugriffsverletzung:

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt xyz.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 037B0000. Lesen von Adresse 037B0000' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Die Adresse variiert natürlich. Ich habe leider keine Ahnung woran das liegt, bzw. an welcher Stelle im meinem Code der Fehler liegen könnte. Ich weiß nichtmals ob das Problem in meiner DLL oder in meiner Applikation liegt.

Wie kann herausbekommen wo der Fehler liegt

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 09:08
Debug-Infos aktivieren und JCLDebug-Units der Jedi Code Library verwenden.
Falls es "nur" doppelte Freigaben von Strings wären würde auch FastMM mit aktiver Logausgabe reichen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 09:14
oder einfach das Projekt der DLL laden, die Anwendung die die DLL nutzt zur Projektgruppe hinzufügen, die Anwendung aus der IDE heraus ausführen und mit dem Debugger durchgehen. Der sollte dann auch den Code deiner DLL mit abarbeiten.

Gruß oki
42
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

Re: Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 10:30
Zitat von Bernhard Geyer:
Debug-Infos aktivieren und JCLDebug-Units der Jedi Code Library verwenden.
Habe jcl-1.104.1.3248 heruntergeladen und auch installiert. Aber wie verwende ich die JCLDebug-Units nun?




Zitat von Bernhard Geyer:
Falls es "nur" doppelte Freigaben von Strings wären würde auch FastMM mit aktiver Logausgabe reichen.
Denke das sieht nicht danach aus, oder?

Zitat:
---------------------------
BF533SourceControl.exe: Memory Leak Detected
---------------------------
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

5 - 12 bytes: Unknown x 1

69 - 84 bytes: TWorkThread x 1

Note: Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting".

---------------------------
OK
---------------------------



Zitat von oki:
oder einfach das Projekt der DLL laden, die Anwendung die die DLL nutzt zur Projektgruppe hinzufügen, die Anwendung aus der IDE heraus ausführen und mit dem Debugger durchgehen. Der sollte dann auch den Code deiner DLL mit abarbeiten.

Gruß oki
Da die Kommunikation Timeouts enthält, geht durchsteppen leider nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 10:50
Zitat von Viktorii:
Habe jcl-1.104.1.3248 heruntergeladen und auch installiert. Aber wie verwende ich die JCLDebug-Units nun?
Schau dir die entsprechend mitgelieferten Beispiele zu den JCLDebug-Units an (Demo-Unterverzeichnis Debug)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Stelle der Zugriffsverletzung finden

  Alt 20. Apr 2009, 11:00
Zitat:
Da die Kommunikation Timeouts enthält, geht durchsteppen leider nicht.
Dann setze BreakPoints und schau vorher, wo der Debugger mit der Exception anhält. So kannst du dich trotz Timeouts an die Fehlerquelle herantasten.
Nach der Exception kannst du ja in der IDE auf Anhanlten gehen und der Cursor steht dann auf der Zeile die die Exception geworfen hat, auch in deiner DLL. Das das in einem laufenden Datenstream u.U. mühsam ist will ich nicht bestreiten. In der Regel schreibe ich ein eigenes Log bei solchen Vorgängen mit. Da lasse ich dann auch die Exceptions mit protokollieren.

Gruß oki
42
  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 03:51 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