Vista del Compilatore Nomi Alterati in C++
-
09-09-2019 - |
Domanda
Come faccio a visualizzare generato dal compilatore nomi alterati per l'overload di funzioni in C++?Sto usando VC9 ma le risposte per altri compilatori sono i benvenuti.
Edit: Trovo tutte le risposte utili qui.Accettare quello che mi piaceva di più.
Soluzione
Si potrebbe guardare nel file di mappa. Supponendo di avere la mappa di generazione di file acceso.
Altri suggerimenti
È possibile visualizzare i nomi delle funzioni decorate utilizzando Dependency Walker .
Aprire qualsiasi DLL \ EXE in Dependency Walker e nel riquadro di destra è possibile visualizzare un elenco dei nomi delle funzioni decorati.
Dal momento che si chiede anche di altri compilatori. C'è uno strumento chiamato nm sulla toolchain GNU. Otterrete su Linux e Cygwin, e credo che sia disponibile in mingw anche. Chiamarlo senza parametri mostrerà i simboli straziati nel binario. Chiamarlo con --demangle farà l'ovvio.
È possibile visualizzare decorato nomi storpiati () con Dumpbin .
Mentre tutte le opere sopra, c'è un ben documentato modo per visualizzare i nomi alterati dall'uso di L'Elenco Dei File:Pagine Delle Proprietà Del Progetto -> C/C++ -> File Di Output -> Assembler Uscita.
(EDIT:)
Un motivo c'è solo l'Elenco dei file e DUMPBIN sono documentati come modi di vedere nomi decorati.Sia il file della mappa e dependency walker, ha suggerito soluzioni, display solo decorate i nomi.Se si dispone di più sovraccarichi di un nome di funzione, avrai un momento difficile corrispondenti ai vari nomi decorati si vedrà.(Che è più o meno ricostruire l'arredamento e lo stile.Mentre possibile, sconfigge l'intero scopo originale.)
comando linux gnu catena utensile nm può essere utilizzato per visualizzare nome alterato.
#include<iostream>
using namespace std;
int fun1(){}
int fun1(int){}
int main()
{
return 0;
}
#g++ name_decoration_2.cpp
#nm a.out
...
...
000000000040064e T _Z4fun1i
0000000000400648 T _Z4fun1v
U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
U _ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4