Как я могу усечь искаженные идентификаторы C ++, показанные командой GDB disassemble? - PullRequest
3 голосов
/ 28 октября 2009

Команда дизассемблирования GDB подходит для коротких идентификаторов C, например, основной . Для длинных искаженных идентификаторов C ++ многословие излишне. Например, используя icpc, я вижу результаты типа

(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

Отображает, что долго раздражает в CLI. Они делают отображение сборки TUI в GDB практически бесполезным.

Есть ли способ указать GDB показывать усеченный идентификатор? Скажи клип все, кроме 50 символов?

Ответы [ 2 ]

1 голос
/ 29 октября 2009

Текущая GDB из CVS ведет себя так, как вы хотите, когда она знает, что в разборке есть только одна функция:

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

Когда GDB не может знать, будет ли дизассемблирование пересекать границу функции, он все равно печатает «длинную» форму:

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

Вот патч , который ввел «короткую форму».

1 голос
/ 29 октября 2009

Это на самом деле не отвечает на ваш вопрос, но вы можете хотя бы разобрать вещи, чтобы сделать их немного менее уродливыми:

set print asm-demangle on

...