Я хочу использовать lldb для вывода параметра, переданного вызову функции.
с AndroidStudio lldb NDK
int aaaaaa(int a, int b) {
int rrr = a + b;
return rrr;
}
int x = 111;
int y = 222;
int eee = aaaaaa(x,y);
// I know that print x can output the correct result, but I want to
// output the result of x through the register, what should I do?
Я использовал второй код выше для вызова функции. Я хочу напечатать значения x и y, используя lldb. Когда я использую print $ebp+8 , результат неверен.
Как я могу распечатать 111 с помощью команды lldb?
Какова правильная команда lldb?
это ссылка на изображение, чтобы показать мои средства http://note.youdao.com/noteshare?id=7adb0c6fd965d26553c6bbb05896721c





Я не уверен, чего вы пытаетесь достичь, поэтому, возможно, я не отвечаю на ваш вопрос...
Но если вы находитесь в начале строки, которая вызывает здесь aaaaaa:
int eee = aaaaaa(x,y);
тогда x, вероятно, еще не был скопирован в место передачи аргумента - это часть кода, принадлежащая этой исходной строке. Вы можете посмотреть на разборке, чтобы убедиться в этом. Поэтому, если вы хотите увидеть значение, скопированное в место передачи, вам нужно будет пошагово выполнить инструкцию в этой исходной строке, чтобы добраться до места, где значение копируется из стека в слот регистра/стека передачи.
В противном случае вы можете войти в aaaaaa, и если вы остановитесь прямо на входе в функцию, значение также будет в проходящем месте.
это ссылка на изображение note.youdao.com/noteshare?id=c447633306d052dbed64b1fdb5dc0dd2
@awebing print $arg1 для x86-64 и ARM, print $esp+4 для x86 32bit
print $esp+4 не равно print a
Я вхожу в функцию аааааа, как печатать с регистрацией, пожалуйста, помогите мне