Предположим, у меня есть этот код:
int main() {
int var1;
char *ptr = malloc(5 * sizeof(char));
//...........
do_something();
//...........
return 0;
}
Мы знаем, что фактическое расположение памяти будет разделено на сегменты, такие как: .text
, .bss
, .data
, .heap
, .stack
.
Я знаю, как использовать objdump
, readelf
и т. Д. Но я хочу получить лучшее представление о стеке памяти, где я могу видеть такие вещи, как:
.heap ptr
.stack do_something()
.text main()
.bss var1
Главное в этом: фактические имена переменных отсутствуют в выходных данных objdump
, readelf
и т. Д.
Я компилирую этот код с помощью -g
, таким образом, сохраняя таблицу символов.
Тогда, почему я не могу видеть структуру памяти с включенными локальными / глобальными именами переменных?
objdump -x
показывает имена переменных, если тип static
, иначе нет.Почему?