Где находится файл frame.h (или его эквивалент) в современных ОС Linux?
Книга, которую я читаю, относится к включаемому файлу, который показывает, как выглядит фрейм стека в системе UNIX.
Особенно: /usr/include/sys/frame.h
У меня проблемы с поиском современного эквивалента. У кого-нибудь есть идея? Я на Ubuntu 12.10.
Кстати, это описание стековых фреймов и записей активации, которые я хочу - не обязательно, что реликт файла. Эта информация была сохранена в этом файле, "назад в день", хотя.
1 ответ
Возможно, вы захотите взглянуть на ptrace.h
а также calling.h
файлы, которые имеют некоторые C-структуры, определяющие структуру фрейма стека и соглашения о вызовах (их можно найти в тех же папках, что и frame.h
). Кроме того, elfcore.h
Заголовочный файл, включенный в проект gperftools, может предоставить полезную информацию о кадрах стека вызовов.
Также, если вы так склонны, вы можете посмотреть книги по сборке и разборке x86 в Викиучебниках. У них достаточно много полезной информации (как высокого, так и низкого уровня) относительно стековых фреймов и деталей соглашения о вызовах.
С точки зрения frame.h
звонит sudo find / -name "frame.h"
на моем Xubuntu 12.04 установка возвращает следующее:
/usr/src/linux-headers-3.2.0-23/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-33/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-35/arch/x86/include/asm/frame.h
/usr/src/linux-headers-3.2.0-34/arch/x86/include/asm/frame.h
Неудивительно, что между файлами, перечисленными выше, нет изменений в файле, и вряд ли вы увидите какие-либо изменения по причинам совместимости (конечно, это зависит от архитектуры вашей системы).