Forum: PC-Programmierung EXCEPTION_ACCESS_VIOLATION


von lars (Gast)


Lesenswert?

guten tag,

ich habe ein test cmocka-test erstellt.
Dazu habe ich eine cmakelists.txt, aus welcher mir eine makefile 
generiert wird.
Nach dem bauen mit make (mingw32-make.exe) habe ich eine executable.
Wenn ich diese ausführe, bekomme ich den die Ausgabe
1
[==========] Running 1 test(s).
2
[ RUN      ] test_read_io_success
3
[  ERROR   ] --- EXCEPTION_ACCESS_VIOLATION occurred at 00401555.
4
5
To debug in Visual Studio...
6
1. Select menu item File->Open Project
7
2. Change 'Files of type' to 'Executable Files'
8
3. Open this executable.
9
4. Select menu item Debug->Start
10
11
Alternatively, set the environment variable
12
UNIT_TESTING_DEBUG to 1 and rebuild this executable,
13
then click 'Debug' in the popup dialog box.
14
15
16
[  FAILED  ] test_read_io_success
17
[==========] 1 test(s) run.
18
[  PASSED  ] 0 test(s).
19
[  FAILED  ] 1 test(s), listed below:
20
[  FAILED  ] test_read_io_success
21
22
 1 FAILED TEST(S)
ich habe in meiner cmakelists
  setENV{UNIT_TESTING_DEBUG} 1)
eingefügt, allerdings ist das verhalten das selbe. Ich bekomme nur in 
der cygwin konsole die Ausgabe (habe jetzt zumindest irgendein popup 
erwartet).

Was ich rausgefunden habe, ist das es daran liegen könnte, dass es 
normalerweise eine 32-bit anwendung ist, die jetzt auf windows 64 bit 
läuft.
Aber wie ich das beheben kann, habe ich nichts gefunden.

kennt jemand dieses Problem? Wie kann ich es beheben?

von Oliver S. (oliverso)


Lesenswert?

Na ja, das Visual Studio und cygwin nicht so richtig zusammenpassen, 
sollte dir eigentlich klar sein. Microsoft kennt halt nix anderes als 
Visual Studio, und bringt dann diese Meldung.

Lass das Programm im Debugger deiner Wahl laufen, und schau, was der dir 
dazu sagt.

Oliver

von Holger (Gast)


Lesenswert?

Der Fehler dürfte auftreten wenn du auf einen Speicherbereich zugreifst 
der nicht zu deinem Programm gehört (z.B. über einen Pointer der nicht 
initialisiert wurde, Speicher der bereits freigebeben ist, ...).

Normalerweise kommt dann ein kleiner Dialog mit den Auswahlmöglichkeiten 
"Debug, retry, cancel". Über diesen kannst du dann direkt den Visual 
Studio Debugger starten und dich beim gestoppten Program einhängen. 
Alternativ kannst du das Program auch direkt übner Visual Studio bauen 
und ausführen, der Debugger stoppt dann das Program an der Stelle, an 
der die Exception auftritt.

Wenn du kein Visual Studio installiert hast, musst du den Debugger 
benutzen, der mit deiner Toolchain kommt (vermutlich ist bei mingw der 
gdb mit dabei).

Gruß,

Holger

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.