¿Cómo puedo truncar los identificadores de C ++ destrozados que se muestran con el comando de desmontaje de GDB?

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

  •  08-07-2019
  •  | 
  •  

Pregunta

El comando de desmontaje de GDB es bueno para identificadores C cortos, p. main . Para identificadores de C ++ largos y destrozados, la verbosidad es exagerada. Por ejemplo, usando icpc veo 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

Las pantallas que son largas son molestas en la CLI. Hacen que el ensamblaje TUI de GDB se muestre prácticamente inútil.

¿Hay alguna forma de decirle a GDB que muestre un identificador truncado? ¿Diga recortar todos menos 50 caracteres?

¿Fue útil?

Solución

El GDB actual de CVS se comporta de la manera deseada cuando sabe que solo hay una función en el desmontaje:

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

Cuando GDB no puede saber si el desmontaje cruzará o no el límite de la función, todavía imprime el "largo". formulario:

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

Aquí está el parche que introdujo el " forma corta " ;.

Otros consejos

Esto realmente no responde a su pregunta, pero es posible que al menos pueda exigir cosas para que sean un poco menos feas:

establece print asm-demangle en

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top