Como posso truncar os identificadores mutilados C ++ mostrados pelo comando desmonte do GDB?

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

  •  08-07-2019
  •  | 
  •  

Pergunta

comando desmonte do GDB é bom para identificadores curta C, por exemplo, principal. Por muito tempo, mutilado identificadores C ++ a verbosidade é um exagero. Por exemplo, usando ICPC vejo resultados como

(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

Exibe tanto tempo são irritantes no CLI. Eles fazem TUI do GDB montagem exibir todos, mas inútil.

Existe uma maneira de dizer GDB para mostrar um identificador truncado? Say cortar todos, mas 50 caracteres?

Foi útil?

Solução

Current GDB do CVS se comporta da maneira que quiser, quando se sabe que há apenas uma função na desmontagem:

(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.

Quando GDB não pode saber se ou não a desmontagem cruzará função limite, ainda imprime a forma "longa":

(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.

Aqui está a remendo que introduziu o "short forma".

Outras dicas

Este realmente não responder à sua pergunta, mas você pode ser capaz de, pelo menos coisas demangle para torná-los um pouco menos feio:

set print asm-demangle on

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top