Mon but est:
Le premier est correct et c’est la seconde question de cette question. À un niveau élevé, comment énumérer les variables locales à partir d’une entrée de stack dans Delphi?
À un niveau bas, c’est ce que j’ai étudié:
RTTI: ne répertorie pas ce type d’informations sur les méthodes. Ce n’était pas quelque chose que je pensais réellement être une option réaliste, mais listant ici de toute façon.
Informations de débogage: Chargement des informations de débogage produites pour une version de débogage.
Les problèmes que je rencontre ici sont:
Si c’est la bonne approche, alors cette question devient «Existe-t-il de la documentation pour le format de fichier TDS / TD32 et existe-t-il des exemples de code qui chargent des variables locales?
Un exemple de code n’est pas essentiel mais pourrait être très utile, même si c’est très minime.
Vérifiez si des symboles de débogage n’étaient pas en binary. Il est également possible d’utiliser GDB (sur un port Windows). Ce serait bien si vous trouviez un fichier .dbg ou .dSYM. Ils contiennent du code source, par exemple.
gdb> list foo 56 void foo() 57 { 58 bar(); 59 sighandler_t fnc = signal(SIGHUP, SIG_IGN); 60 raise(SIGHUP); 61 signal(SIGHUP, fnc); 62 baz(fnc); 63 }
Si vous ne disposez pas de fichiers de débogage, vous pouvez essayer d’obtenir MinGW ou Cygwin et utiliser nm (1) ( page de manuel ). Il lira les noms de symboles du binary. Ils peuvent contenir certains types, comme ceux de C ++:
int abc::def::Ghi::jkl(const std::ssortingng, int, const void*)
N’oubliez pas d’append l’option --demangle
alors ou vous obtiendrez quelque chose comme:
__ZN11MRasterFont21getRasterForCharacterEh
au lieu de:
MRasterFont::getRasterForCharacter(unsigned char)