Какие распространенные форматы / типы символов отладки?
DWARF и STABS (они встроены в исполняемый файл, в специальные разделы), база данных программ (PDB; внешний файл, используемый MSVC).
Как они связанык компиляторам и платформам?Всегда ли это одинаковый формат в GCC и MinGW на разных платформах?
GCC использует DWARF / STABS (я думаю, что это опция компиляции GCC) как в Linux (ELF), так и в Windows (PE),не знаю о других.MSVC всегда использует PDB.
Могу ли я проверить во время выполнения, есть ли в сборке они и в каком формате они находятся?
Можно проанализировать исполняемый образ и посмотреть, есть лиявляются разделами с информацией об отладке (см. документация STABS и спецификации DWARF ).Файлы PDB распространяются либо с исполняемыми файлами, либо через серверы символов (поэтому, если вы не хотите выходить в интернет, проверьте, есть ли X.pdb для X.exe / X.dll).
О том, как читатьи использовать эти символы - я не знаю о DWARF / STABS (возможно, в GNU binutils есть что-то, что может их найти и извлечь), но для PDB лучше всего использовать dbghelp - его использование довольно хорошо задокументировано и в сети есть много примеров.Существует также DIA SDK , который можно использовать для запроса файлов PDB.
Достаточно ли стандартизированы символы отладки, чтобы можно было ожидать некоторой степени переносимости для таких решений?
У DWARF есть формальная спецификация, и она чертовски сложна.PDB AFAIK не задокументировано, но dbghelp / DIA есть и являются рекомендуемым способом.