#go #reverse-engineering #delve
# #Вперед #обратное проектирование #углубиться
Вопрос:
Точно так же, как сказано в вопросе: во время отладки двоичного файла Go я хочу изменить значение регистра. help set
в (dlv)
возвращает:
(dlv) help set
Changes the value of a variable.
[goroutine <n>] [frame <m>] set <variable> = <value>
See $GOPATH/src/github.com/go-delve/delve/Documentation/cli/expr.md for a description of supported expressions. Only numerical variables and pointers can be changed.
Я просмотрел документацию, но для меня это звучит запутанно. Я ценю любые разъяснения. Мне просто нужно изменить значение в регистре.
Комментарии:
1. Если вы имеете в виду «как я могу установить машинный регистр»: вы не можете. Это сказано прямо в тексте, который вы процитировали. Вы можете установить только переменную уровня языка, и даже тогда, только если это числовое значение или указатель.
2. @torek О! Так вот что означает последнее предложение в цитате. Может быть, вы можете добавить ответ, и я его приму. Спасибо
Ответ №1:
Команда командной строки delve debugger set
не предоставляет доступ к машинным регистрам. Вы можете устанавливать переменные только на уровне исходного кода. Фраза:
Могут быть изменены только числовые переменные и указатели.
означает, что с некоторыми переменными исходного кода нельзя манипулировать таким образом, например, вы не можете вызывать большинство функций времени выполнения. Например, даже если у вас есть math/big
и, следовательно NewInt
, вы не можете использовать это для создания нового *Int
значения.