Моя цель:
Первое прекрасно, а второе - это вопрос. На высоком уровне как вы перечисляете локальные переменные, учитывая запись стека в Delphi?
На низком уровне это то, что я изучал:
RTTI: не перечисляет такую информацию о методах. Это было не то, что я когда-либо считал реалистичным вариантом, но перечисление здесь в любом случае.
Отладочная информация: Загрузка отладочной информации, созданной для сборки отладки.
Проблемы, с которыми я сталкиваюсь, следующие:
Если это правильный подход, тогда возникает вопрос: "Имеется ли документация для формата файла TDS/TD32 и есть ли какие-либо образцы кода, которые загружают локальные переменные?"
Пример кода не является существенным, но может быть очень полезным, даже если он очень минимален.
Проверьте, не были ли какие-либо символы отладки в двоичном формате. Также возможно использование GDB (на Windows - порт Это). Было бы здорово, если бы вы нашли .dbg или .dSYM файл. Они содержат исходный код, например.
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 }
Если у вас нет файлов отладки, вы можете попробовать получить MinGW или Cygwin и использовать nm (1) (man page). Он будет читать имена символов из двоичного кода. Они могут содержать некоторые типы, такие как С++:
int abc::def::Ghi::jkl(const std::string, int, const void*)
Не забудьте добавить параметр --demangle
, или вы получите что-то вроде:
__ZN11MRasterFont21getRasterForCharacterEh
вместо:
MRasterFont::getRasterForCharacter(unsigned char)
strings
. Он извлечет строки из любого двоичного файла. Смотрите справочную страницу . Это напечатает строки, которые могут, но не должны быть полезными