2010-09-15 13 views

risposta

16

Il C++ viene compilato direttamente sul codice macchina. Non esiste un linguaggio intermedio come in .NET. Ci sono some C++ disassemblers si può dare un'occhiata a. Hex-Rays decompiler è particolarmente buono.

+0

+1 per raggi Hex, sembra eccellente! – Francesco

+0

+1 anche per raggi Hex! Ho appena visto il video (sul loro sito web) e sembra davvero qualcosa che ho cercato per molto tempo! Grazie! – Poni

1

In breve, no. Ogni 'riflessione' deve essere attraverso un meccanismo codificato a mano.

+0

Penso che Qt supporti qualcosa del genere. – mpen

5

Credo che si stia parlando di C++ non gestito. In tal caso, non è possibile. Il C++ è compilato in codice macchina diverso dai linguaggi gestiti che compila in un linguaggio intermedio che contiene i metadati relativi al codice che è stato compilato.

1

No, il C++ non ha nulla come il riflettore di RedGate, ed è incapace di una cosa del genere. Un disassemblatore non si avvicina a quello che stai cercando.

1

Il codice per le funzionalità introspettive può essere generato dall'output di Gcc-XML o iniettato con OpenC++, ma lo stesso standard C++ non richiede alcuna particolare struttura per questo e nessuna struttura/utilità per questo è inclusa in bundle con qualsiasi compilatori. È anche possibile che un programma C++ legga le informazioni di debug nel proprio file eseguibile, ma non è sicuramente particolarmente portabile, veloce o probabile per una soluzione robusta.