57 votes

Comment interpréter la sortie "info frame" de GDB ?

Certains peuvent-ils m'aider à comprendre ceci :-

 (gdb) info frame
Stack level 0, frame at 0xb75f7390:
 eip = 0x804877f in base::func() (testing.cpp:16); saved eip 0x804869a
 called by frame at 0xb75f73b0
 source language c++.
 Arglist at 0xb75f7388, args: this=0x0
 Locals at 0xb75f7388, Previous frame's sp is 0xb75f7390
 Saved registers:
  ebp at 0xb75f7388, eip at 0xb75f738c

Que signifie « ebp, eip Locals at and Previous Frame's sp » ? S'il vous plaît, expliquez

4voto

Employed Russian Points 50479

Pour comprendre ce que signifient "ebp, eip Locals at et Previous Frame's sp", vous devez comprendre la convention d'appel x86 .

Une fois que vous aurez compris comment les cadres sont disposés , toutes les autres choses seront évidentes.

0voto

kdo53 Points 42

Je sais que cette question date de... il y a 8 ans. Mais pour les futurs utilisateurs, j'ai trouvé un aperçu très clair de l'info ici .

Ceci est tiré du lien ci-dessus:

 info frame
info f

This command prints a verbose description of the selected stack frame, including:

    the address of the frame
    the address of the next frame down (called by this frame)
    the address of the next frame up (caller of this frame)
    the language in which the source code corresponding to this frame is written
    the address of the frame's arguments
    the address of the frame's local variables
    the program counter saved in it (the address of execution in the caller frame)
    which registers were saved in the frame 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X