web-dev-qa-db-fra.com

Passer à l'assemblage dans gdb

Existe-t-il un moyen de basculer vers Assembly lors du débogage d'un programme C ou C++ dans gdb? (Étant donné que tous les fichiers source et leurs fichiers d'assemblage correspondants sont disponibles)

34
Ben

Il existe un moyen de démonter une fonction ou une certaine section de code, c'est ce que vous recherchez?

La commande pour ce faire serait disassemble <function name> ou un emplacement mémoire.

Est-ce à cela que vous faites référence?

(gdb) help disassemble
Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.
23
X-Istence

Vous pouvez passer à la mise en page asm dans gdb:

(gdb) layout asm

Voir ici pour plus d'informations.

59
ks1322

Dans la nouvelle version 7.0 de gdb, la commande disassemble peut prendre un nouvel argument /m ce qui lui fait émettre une source et un démontage mixtes.

11
Michael Snyder

L'utilisation de la commande disas fera probablement ce que vous voulez.

Selon l'aide interne, la commande disas effectue les opérations suivantes:

Disassemble a specified section of memory.
Default is the function surrounding the pc of the selected frame.
With a single argument, the function surrounding that address is dumped.
Two arguments are taken as a range of memory to dump.
4
Paul Wicks

Cette question a également été posée dans le groupe de recherche de cgdb https://groups.google.com/forum/?hl=de&fromgroups=#!topic/cgdb-users/E-jZCJiBAQQ

Pas encore de réponse sur les raisons pour lesquelles la mise en page ASM ne fonctionne pas

Edit: Ils ont posté récemment et ont dit que c'était une fonctionnalité qui n'était pas encore implémentée. (vérifiez le lien ci-dessus)

1
JohnRW