Из спецификации DWARF 3 (http://dwarfstd.org/doc/Dwarf3.pdf):
2.16. Расположение данных Любая запись отладочной информации, описывающая объект данных, которая включает переменные, параметры, общие блоки и т. П., Может иметь атрибут DW_AT_location, значение которогоявляется описанием местоположения (см. Раздел 2.6).
Значением атрибута DW_AT_location является выражение местоположения. Выражения местоположения довольно сложные, я бы посоветовал вам прочитать спецификацию DWARF, на которую есть ссылки выше, чтобы узнатьВ заключение, выражение местоположения может быть простым адресом с местоположением переменной или мини-программой, которая должна быть оценена отладчиком во время выполнения для определения местоположения переменной. Вот несколько примеров выражений местоположенияиз спецификации DWARF:
В идеале ваш компилятор должен генерировать список местоположений для переменной, описывающей ее местоположение во всех точках программы. Отслеживание местоположения переменной через регистры не является тривиальным, поэтому некоторые компиляторы, когдапроизводя отладкуинформация отключает оптимизацию, такую как перемещение переменных в регистры.