2015-12-23 2 views
1

Я пытаюсь извлечь информацию из объектного файла командой nm для какого-то статического анализа кода, в котором мне нужно подсчитать числа объявленных переменных и функций в C-коде. Я прошел через documentation GNU Binutils. Я мог бы найти переменные, объявленные в глобальной области видимости в таблице символов, возвращаемой nm, но я не смог найти переменные, объявленные в локальной области. Почему это? Как я могу получить к нему доступ?Список локальных переменных с помощью команды `nm`

Есть ли способ, кроме nm, в котором я могу извлечь нужную вам информацию. Как компилятор gcc должен генерировать таблицу символов для его использования. Могу ли я получить к нему доступ через любую команду gcc?

ответ

1

Вы не можете получить доступ к локальным переменным из объектных файлов, поскольку gcc не сохраняет информацию об этом. Вы можете использовать nm только для отображения таблицы символов объектных файлов. Эти таблицы символов используются для связывания. Локальные переменные не нужны во время связи. Нестатические поля структур и классов тоже.

Для просмотра локальных переменных gcc может компилировать программы со специальной отладочной информацией об этом. Но для пупок статического анализа вы должны анализировать исходный код или машинный код в объектных файлах.

+0

Есть ли способ для компиляции с gcc таким образом, чтобы можно было просматривать локальные переменные? – taufique

Смежные вопросы