Прочитать отладочную информацию во время выполнения из приложения

У меня есть несколько вопросов относительно отладочных символов и того, что с ними можно сделать, помимо отладки. Меня больше всего интересуют ответы относительно GCC, но я также был бы рад узнать, как это выглядит в других компиляторах, включая MSVC.

Прежде всего:

  • Каковы общие форматы / типы отладочных символов?
  • Как они соотносятся с компиляторами и платформами? Всегда ли используется один и тот же формат в GCC и MinGW для разных платформ?
  • Могу ли я проверить во время выполнения, есть ли они в сборке и в каком они формате?

И еще несколько практических вопросов ... Как я могу :

  • Проверить текущий файл и номер строки?
  • Получить (квалифицированное) имя выполняемой функции?
  • Получить полную текущую трассировку стека?

Позвольте мне подчеркнуть, что я говорю о проверки во время выполнения. Все это может быть прочитано и красиво распечатано GDB, но я не знаю, сколько информации поступает из самих отладочных символов и сколько из исходного кода, к которому GDB также имеет доступ.

Может быть, есть ' sa, которая может анализировать отладочные символы и выдавать такую ​​информацию?

Достаточно ли стандартизованы отладочные символы, чтобы я мог ожидать некоторой степени переносимости таких решений?

9
задан Thomas Weller 26 August 2015 в 11:09
поделиться