Как узнать, на какие глобальные переменные или статические переменные ссылаются какие функции? (С) - PullRequest
0 голосов
/ 09 января 2019

Я хотел бы знать, какие функции ссылаются (читают или пишут) на глобальные или статические переменные в исполняемом файле, скомпилированном из C.

Я не думаю, что gdb или lldb предлагают такую ​​функцию "из коробки". Есть ли другой инструмент, который может это сделать?

В качестве альтернативы, можно получить все глобальные и статические переменные из gdb / lldb и установить точку наблюдения для каждой переменной. Тем не менее, GDB, по-видимому, не может разрешить чтение только мягкой точки наблюдения, поскольку для этого потребуется большое количество точек наблюдения, которые аппаратные точки наблюдения просто не могут сделать. Поэтому я бы предположил, что gdb не подходит, чтобы знать, какие функции относятся к каким глобальным / статическим переменным.

Подходит ли lldb для этой задачи? Есть ли готовое решение для этого?

1 Ответ

0 голосов
/ 16 января 2019

Чтобы ответить на часть «Альтернативы» вашего вопроса, lldb не поддерживает программно реализованные точки наблюдения, поскольку на самом деле они работают не очень хорошо. Поэтому, как и в случае с GDB, мы ограничены аппаратными ресурсами компьютера, на котором вы работаете. Если глобалы, на которые вы хотите смотреть, не слишком велики, вы должны иметь возможность ставить на них точки наблюдения один за другим.

Конечно, отладчик может только сказать вам, кто получил доступ к отслеживаемым данным в коде, который фактически был запущен во время сеанса отладки. Поэтому, если вы хотите получить исчерпывающий ответ для всей программы, отладчик - не тот инструмент.

...