2009-10-28 3 views
3

La commande de démontage de GDB est intéressante pour les identificateurs C courts, par ex. main. Pour les identifiants C++ longs et tronqués, la verbosité est excessive. Par exemple, en utilisant icpc je vois des résultats commeComment est-ce que je peux tronquer les identifiants C++ mutilés montrés par la commande de démontage de GDB?

(gdb) disassemble 0x49de2f 0x49de5b 
Dump of assembler code from 0x49de2f to 0x49de5b: 
0x000000000049de2f <_ZN5pecos8suzerain16fftw_multi_array6detail18c2c_buffer_processIPA2_dPKSt7complexIdEilNS2_26complex_copy_differentiateIS4_EEEEvT_T1_T2_T0_SD_SE_RKT3_+167>: mov 0x18(%rsp),%rsi 

Les affichages aussi longs sont agaçants dans la CLI. Ils rendent l'affichage de l'assemblage TUI de GDB pratiquement inutile.

Existe-t-il un moyen de dire à GDB d'afficher un identifiant tronqué? Dire clip tous sauf 50 caractères?

Répondre

1

GDB actuel de CVS se comporte de la façon dont vous voulez quand il sait qu'il n'y a qu'une seule fonction dans le démontage:

(gdb) disas 0x000000000040071c 
Dump of assembler code for function _ZNKSt8_Rb_treeIPiSt4pairIKS0_S0_ESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE21_M_get_Node_allocatorEv: 
    0x000000000040071c <+0>: push %rbp 
    0x000000000040071d <+1>: mov %rsp,%rbp 
    0x0000000000400720 <+4>: mov %rdi,-0x8(%rbp) 
    0x0000000000400724 <+8>: mov -0x8(%rbp),%rax 
    0x0000000000400728 <+12>: leaveq 
    0x0000000000400729 <+13>: retq 
End of assembler dump. 

Lorsque GDB ne peut pas savoir si oui ou non le démontage se limite fonction de coupure, il imprime toujours la forme « long »:

(gdb) disas 0x000000000040071c 0x000000000040071c+1 
Dump of assembler code from 0x40071c to 0x40071d: 
    0x000000000040071c <_ZNKSt8_Rb_treeIPiSt4pairIKS0_S0_ESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE21_M_get_Node_allocatorEv+0>: push %rbp 
End of assembler dump. 

Voici le patch qui a introduit la "forme courte".

1

Cela ne répond pas vraiment à votre question, mais vous pourriez être en mesure d'au moins les choses demangle pour les rendre un peu moins laid:

set print asm-demangle on

Questions connexes