Поиск адресов памяти переменных и функций в оболочке
В программировании оболочки есть ли способ найти адреса переменных и функций? Что-то вроде c или C++, когда мы выводим &x, мы можем получить адрес памяти x.
1 ответ
Это зависит от того, что вы хотите. Большинство оболочек поддерживают только символические (или "мягкие") ссылки, переменные, которые содержат имена других переменных. Оболочка Korn 93 имеет ссылки на имена, созданные с использованием typeset -n
, но адрес не выставлен. Взгляните на это в man ksh
это может помочь.
Но даже если бы вы могли получить адрес памяти переменных, что бы вы сделали с этим? Переменные оболочки не структурированы в примитивном порядке, как в C, поэтому арифметика указателей была бы бесполезна. Вы не можете перебирать массив или символьную строку, просто увеличивая адрес. Лучшее, что вы можете сделать, это исследовать память этой конкретной версии этой конкретной оболочки.
Поскольку оболочки в основном написаны на C, вы всегда можете скомпилировать исходный код оболочки с помощью debug (-g
) и подключиться с помощью отладчика. Хотя понятия не имею, что это могло бы вас купить, поэтому мой вопрос должен быть: почему?
Редактировать; из комментария я вижу, что вы хотите размер стека - я почти уверен, что переменные оболочки будут размещаться либо в куче, либо в блоке окружения.