Comment puis-je tronquer les identificateurs C ++ mutilés présentés par la commande désassembler de GDB?

StackOverflow https://stackoverflow.com/questions/1638967

  •  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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top