Forum: PC-Programmierung EXCEPTION_ACCESS_VIOLATION


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von lars (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.