Je suis en train de faire un core dump dont la pile est corrompue. J'essaie de le démonter et trouvé ce qui suit plz aidez-moi à anaylyse .. ilinstruction de langue d'assembly 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
Peut cette instruction de Pusha peut conduire à une décharge de base?
Est-il possible de vérifier le débordement de la pile? – Arpit
@Arpit: cela dépend, en mode protégé, vous aurez une exception CPU #SS (0). À part cela, vous pourriez obtenir une exception #PF (x). Mais ceux-ci seront pris par le système d'exploitation. nobugz a suggéré la cause la plus probable: le code a sauté dans un morceau de mémoire aléatoire. Vous pouvez le faire en déréférençant un pointeur non valide, généralement en appelant une méthode virtuelle sur un objet qui n'a pas été initialisé. – Skizz