3
У меня есть адрес 0x6041f0
. Я знаю, что там сидит целое число. В C я бы просто сделал *(int *)0x6041f0
, чтобы получить целочисленное значение, присутствующее на этом адресе.Как разыменовать адрес в целое число в python?
Как добиться того же в Python?
PS: Я пишу скрипт Python, который использует модуль gdb
. Фактическая отлаживаемая программа находится на C++. Так как требуется много манипуляций с низким уровнем.
Могу ли я спросить, почему/как вы закончили тем, что манипулировать адрес как '0x6041f0' в вашей программе Python? – TigerhawkT3
Вы работаете с объектами 'gdb.Value'? Я не знаком с API-интерфейсом GDB Python, но, глядя на [документы] (https://sourceware.org/gdb/onlinedocs/gdb/Values-From-Inferior.html), похоже, если у вас есть 'gdb.Value', представляющий целое число, которое было выбрано из указателя, вы вызываете метод Value.cast, чтобы передать его указателю, затем' Value.dereference', чтобы разыменовать его. Я не знаю, есть ли какие-либо соображения, которые сделают особенно плохую идею обходить это и использовать ctypes, но, похоже, безопаснее всего идти с предоставленным API. – user2357112
Вы говорите об указателе в процессе выполнения скрипта python или указателе в отладочном процессе? Потому что это будет иметь огромное значение. – textshell