Delphi borland Debug exe файл tds Какие структуры внутри
Где можно почитать документацию какие структуры данных хранит debug exe в файле .tds?
Нужно для того что получить как имена адреса локальных переменных при ошибке так и имя процедуры.
библиотека Jcl частично решает эту проблему и там можно получить имя процедуры. A вот локальными переменными она не владеет.
Когда компилятор генерит exe он в каком то же формате заносит адреса локальных переменных т.к в самом exe имена переменных есть. И сам отладчик позволяет просматривать текущее значение переменных как он это делает?
Кстати, модуль Jcl который парсит сам exe получает имена локальных переменных это просто массив строк а должна быть еще одна структура там где будет index на эту строку offset от VA и наверно OffsetProcedure адрес процедуры кому принадлежит лок переменная а вот такой структуры я не нашел в модуле JclTD32.pas и если бы нашел то с какого места начать ее парсить тож пока не ясно. хотя это уже лучше чем ничего.
я только смог найти вот такой pdf там есть основная структура exe а структура отладочной инфы там нет наверно каждый компилятор сам решает как ее записывать https://drive.google.com/file/d/0B3_wGJkuWLytbnIxY1J5WUs4MEk/view?resourcekey=0-n5zZ2UW39xVTH8ZSu6C2aQ
что вселяет уверенность на успешный поиск эт то что в отладчике delphi все работает.
возможно как то через winApi можно или Dbghlp но даж не знаю что искать нужно. Кто бы тыкнул носом в какую ссылку структур
Ответы (1 шт):
Буду сам с себе писать раз никто не отвечает
мой путь пока такой задал вопрос
там есть ссылка на BorDebug.dll это Api для отлатчика можно получить все что нужно
встает вопрос как это переписать на Delphi? по запросу на Git есть некий модуль от EurekaLog ВОТ ОН EBorlandDebug.pas там показано как можно работая с BorDebug.dll что то оттуда достать. Остается вопрос о необъявленных константах типов и символов пример(0x120) их нашел здесь в delphi они будут определены как
SUBSECTION_TYPE_MODULE = $120;
ну и ссылка на калькулятор для констант что в число преобразовать если нужно будет отлаживать сам создаваемый модуль думаю с этим уже можно работать что бы все в одно собрать