Come posso troncare gli identificatori C ++ alterati mostrati dal comando disassemble di GDB?

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

  •  08-07-2019
  •  | 
  •  

Domanda

Il comando di disassemblaggio di GDB è utile per identificatori C brevi, ad es. main . Per gli identificatori C ++ lunghi e distorti, la verbosità è eccessiva. Ad esempio, usando icpc vedo risultati come

(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

Le visualizzazioni così lunghe sono fastidiose nella CLI. Rendono l'assemblaggio TUI di GDB quasi tutto inutile.

C'è un modo per dire a GDB di mostrare un identificatore troncato? Di 'di tagliare tutti tranne 50 caratteri?

È stato utile?

Soluzione

Il GDB corrente di CVS si comporta come desideri quando sa che esiste una sola funzione nello smontaggio:

(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 non è in grado di sapere se lo smontaggio attraverserà o meno il limite della funzione, stampa comunque il "lungo" forma:

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

Ecco la patch che ha introdotto la " forma breve " ;.

Altri suggerimenti

Questo in realtà non risponde alla tua domanda, ma potresti essere almeno in grado di districare le cose per renderle un po 'meno brutte:

imposta print asm-demangle su

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top