스택이 손상된 코어 덤프가 발생했습니다. 나는 그것을 분해 시도하고있는 다음 PLZ pusha 어셈블리 언어 명령어
(gdb) bt
#0 0x55a63c98 in ??()
#1 0x00000000 in ??()
(gdb) disassemble 0x55a63c90 0x55a63ca8
Dump of assembler code from 0x55a63c90 to 0x55a63ca8:
0x55a63c90: add %cl,%dh
0x55a63c92: cmpsb %es:(%edi),%ds:(%esi)
0x55a63c93: push %ebp
0x55a63c94: add %al,(%eax)
0x55a63c96: add %al,(%eax)
**0x55a63c98: pusha**
0x55a63c99: lret $0x9
0x55a63c9c: subb $0x56,0xd005598(%ebp)
0x55a63ca3: push %ebp
0x55a63ca4: jo 0x55a63cc5
0x55a63ca6: sahf
0x55a63ca7: push %ebp
End of assembler dump.
(gdb) q
이 pusha 명령이 덤프 핵심으로 이어질 수 있습니다 .. 내가 그것을 anaylyse하는 데 도움이?
스택 오버 플로우를 확인할 수있는 방법이 있습니까? – Arpit
@Arpit : 보호 모드에서는 #SS (0) CPU 예외가 발생합니다. 그것 이외에 #PF (x) 예외가 생길 수 있습니다. 그러나 이것들은 OS에 의해 잡힐 것입니다. nobugz가 가장 가능성있는 원인을 제안했습니다. 코드가 임의의 메모리로 이동했습니다. 일반적으로 초기화되지 않은 객체에서 가상 메소드를 호출하여 잘못된 포인터를 역 참조하는 방법으로이 작업을 수행 할 수 있습니다. – Skizz