Comment puis-je tronquer les identificateurs C ++ mutilés présentés par la commande désassembler de GDB?
-
08-07-2019 - |
Question
La commande de désassemblage de GDB convient aux identifiants C courts, par exemple. principal . Pour les identifiants C ++ longs et mutilés, la verbosité est excessive. Par exemple, en utilisant icpc, je vois des résultats tels que
(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
Affiche que les longs sont gênants dans la CLI. Ils rendent l’assemblage TUI de GDB presque inutile.
Existe-t-il un moyen d'indiquer à GDB d'afficher un identifiant tronqué? Dites que vous coupez tous les caractères sauf 50?
La solution
La GDB actuelle de CVS se comporte comme vous le souhaitez quand il sait qu’il n’ya qu’une fonction dans le désassemblage:
(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 le désassemblage traversera la frontière de la fonction, il affichera quand même le "long". forme:
(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 correctif qui introduisait le " forme abrégée ".
Autres conseils
Cela ne répond pas vraiment à votre question, mais vous pourriez peut-être au moins démêler des choses pour les rendre un peu moins laides:
définir print asm-demangle sur