как напечатать параметры с lldb? - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу использовать 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

1 Ответ

1 голос
/ 01 апреля 2019

Я не уверен, чего вы пытаетесь достичь, поэтому я, возможно, не отвечу на ваш вопрос ...

Но если вы находитесь в начале строки, которая вызывает здесь aaaaaa:

int eee = aaaaaa(x,y);

тогда x, вероятно, еще не был скопирован в место передачи аргументов - это часть кода, которая принадлежит этой исходной строке.Вы можете посмотреть на разборку, чтобы проверить это.Поэтому, если вы хотите, чтобы значение было скопировано в место прохождения, вам нужно будет пошагово выполнить инструкцию в этой строке источника, чтобы добраться до места, где значение копируется из стека в прохождение проходного регистра / стека.

В противном случае вы можете перейти на aaaaaa, и если вы остановитесь прямо при входе в функцию, значение также все равно будет находиться в месте прохождения.

...