Это зависит от того, является ли переменная локальной или глобальной. Если это глобально, то с правильными инструментами это довольно просто (я не могу рекомендовать какие-то конкретные, так как использую Linux). Вы просто найдете местоположение символа «i» в таблице символов, и это покажет вам , где «i» находится . Если вы хотите узнать, какое значение оно содержит, вы можете видеть только его начальное значение, но не его значение во время выполнения (очевидно, потому что вы смотрите на исполняемый файл, а не на работающий образ программы ). Если он не инициализирован, то вы не можете увидеть его начальное значение; в противном случае его начальное значение, вероятно, будет видно в инструменте рядом с его местоположением (возможно, в шестнадцатеричном формате, поэтому вам придется его декодировать).
Теперь, если это локальная переменная, тогда это другая история. У переменной вообще не будет имени, так как имена локальных переменных теряются при компиляции программ. Он просто (возможно) будет занимать позицию в стеке во время выполнения этой функции. Например, первая переменная часто находится в -8(%ebp)
, вторая в -12(%ebp)
и т. Д. (-4(%ebp)
и 0(%ebp)
являются специальными). Поэтому, если вы ищете в исполняемом коде исполняемый файл, скорее всего, -8(%ebp)
будет ссылаться на первую локальную переменную в функции. Опять же, вы не можете знать, какое это имеет значение, потому что вы статично смотрите на exe. И все это зависит от того, какой компилятор использовался и какой уровень оптимизации был установлен.
Извините, что не дал никаких конкретных инструментов. Я предполагаю, что у вас есть доступ к некоторым инструментам декомпиляции, которые покажут вам код ассемблера и таблицы символов.