JB wrote on 05. May 2007 at 16:16:
Ich verstehe pittis ersten Beitrag so, dass er Phoner normal verwendet, weil er aber Visual Studio besitzt, hat er dann auch damit zu debuggen versucht.
@pitty
Stimmts oder irre ich mich?
Jo, die Absturzmeldung von Windows bietet an "Klicken Sie auf Abbrechen, um das Programm zu debuggen", weil ich VS drauf habe. Wenn ich da drauf klicke geht VS auf aber es springt nicht an die Absturzstelle, sondern wie erwähnt, gibt es im Output die endlose exception liste.
Also ich habe jetzt mal die "Access Violation" Exception auf "Break into Debugger" gestellt (war auf "Continue"), und er hält tatsächlich bei 0x005074D7 an. Ich habe mal den Disassembly von Prozeduranfang bis num nächsten RET kopiert:
005074C8 55 push ebp
005074C9 8B EC mov ebp,esp
005074CB 83 C4 F8 add esp,0FFFFFFF8h
005074CE 89 55 FC mov dword ptr [ebp-4],edx
005074D1 89 45 F8 mov dword ptr [ebp-8],eax
005074D4 8B 45 F8 mov eax,dword ptr [ebp-8]
005074D7 80 B8 E8 02 00 00 00 cmp byte ptr [eax+2E8h],0 <--- HIER ABSTURZ
005074DE 74 13 je 005074F3
005074E0 55 push ebp
005074E1 E8 C6 FE FF FF call 005073AC
005074E6 59 pop ecx
005074E7 84 C0 test al,al
005074E9 74 08 je 005074F3
005074EB 8B 45 F8 mov eax,dword ptr [ebp-8]
005074EE E8 6D F0 FF FF call 00506560
005074F3 59 pop ecx
005074F4 59 pop ecx
005074F5 5D pop ebp
005074F6 C3 ret
Die Leseadresse von 0x000002E8 ergibt sich wohl aus der Tatsache, dass EAX Null ist. Also ein typischer NULL Pointer Fehler
Registerinhalte:
EAX = 00000000
EBX = 00D96470
ECX = 00000000
EDX = 00000000
ESI = 00000000
EDI = 00E024E0
EIP = 005074D7
ESP = 0012FE7C
EBP = 0012FE84
EFL = 00010203
CS = 001B DS = 0023
ES = 0023 SS = 0023
FS = 003B GS = 0000
OV = 0 UP = 0 EI = 1 PL = 0
ZR = 0 AC = 0 PE = 0 CY = 1
Call Stack:
>phoner2.03.exe!005074d7()
phoner2.03.exe!0061ba4f()
phoner2.03.exe!005436d4()
Gruß,
pitti