Как изменить значение регистра во время отладки двоичного файла Go с помощью Delve?

#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 значения.