Access Violation in Win CE 6.0 R3 Dll-Projekt

Gast #2305804
Lesenswert?

Mahlzeit!

Ich habe folgendes Problem: Ich habe auf einem XP System eine DLL 
Projekt erstellt, welches dort erfolgreich in einer Applikation 
verwendet wird. Nun habe ich diees DLL Projekt auf mein Win CE 6.0 R3 
portiert. Alles ging ohne Probleme kompilieren. Lass ich den Code 
laufen, so wirft exakt eine bestimmte Member-Methode einer Klasse ein 
Access Violation, sobald ich innerhalb dieser Methode eine externe 
Funktion oder eine andere Member-Methode aufrufe. Das Deklarieren und 
Initialisieren von lokalen Variablen und der Zugriff auf 
Member-Variablen funktioniert.

Selbst ein simples "printf("Hallo Welt!\n")" innerhalb dieser 
Member-Methode wirft eine Access Violation in "coredll.dll". Rufe ich 
eine Member-Methode auf, so führt meine DLL zu dieser Access Violation.

Woran kann dies liegen? Hat jemand einen guten Tip?

Vielen Dank!

Grüße, JoW
Gast #2305820
Lesenswert?

Ja, das ist ein wenig ein Problem. Ich hab erstens kein zuverlässiges 
Debug-Image. Außerdem müsste ich dieses auf Grund der Größe und des 
begrenzten RAMs meiner Zielhardware jedes mal bei einer Änderung in den 
Flash schreiben. Dies dauert ca. 30-40 Minuten. Davon möchte ich als 
eher absehen. Klingt doof, aber geht halt nicht.

Ich kann aber mit dem KITL auch im Release durch den Code-Steppen, die 
Sprungweite stimmt dann zwar nicht immer - er springt manchmal in eine 
if, obwohl er dies nicht tut - aber man kann sehen, wo es hängt.

Dabei habe ich eben festgestellt, dass alle anderen Methoden der Klasse, 
die bis zu der Zugriffsverletzung aufgerufen werden, erfolgreich 
terminieren. Erst in dieser einen Methode tritt, egal was man macht - 
Aufrufen einer Member-Methode oder einer externen Funktion wie 
prinft(..) - die Zugriffsverletzung ein.

Greets, JoW
Gast #2305831
Lesenswert?

Das hier spuckt mir das Debug-Fenster im Visual Studio aus:

72246 PID:41b000a TID:528000a Exception 'Data Abort' (4): Thread-
       Id=0528000a(pth=895e29c0), Proc-Id=041b000a(pprc=8952b364)
      'MeineTestExe.EXE', VM-active=041b000a(pprc=8952b364)
      'MeineTestExe.EXE'

72246 PID:41b000a TID:528000a PC=40051544(coredll.dll+0x00041544)
        RA=4091ef18(MeineDLL.dll+0x0001ef18) SP=001ffdec, BVA=001ffddc
Gast #2305879
Lesenswert?

eigentlich nur wenn der "this" zeiger unsinn ist. Dann geht der Zugriff 
auf die Members der Klasse schief. Oder der Fehler ist schon vorher 
passiert (z.b. es wurde speicher überschrieben) und wirkt sich erst beim 
nächsten zugriff auf dem Stack aus.

"Access Violation" ist halt ein ungültiger speicherzugriff, dafür müsste 
man erstmal wissen warauf er zugreifen wollte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren