Android поддерживает PTRACE_SINGLESTEP?
Хорошо, это простой вопрос. Поддерживает ли Android PTRACE_SINGLESTEP, когда я использую системный вызов ptrace? Когда я хочу получить программу Android apk, я обнаруживаю, что не могу обработать трассировку SINGLESTEP. Но ситуация изменилась, когда я использую PTRACE_SYSCALL, он может работать отлично. Андроид уничтожает эту функцию, или на руке нет аппаратной поддержки? Любая помощь будет оценена, спасибо.
это моя основная программа:
int main(int argc, char *argv[])
{
if(argc != 2) {
__android_log_print(ANDROID_LOG_DEBUG,TAG,"please input the pid!");
return -1;
}
if(0 != ptrace(PTRACE_ATTACH, target_pid, NULL, NULL))
{
__android_log_print(ANDROID_LOG_DEBUG,TAG,"ptrace attach error");
return -1;
}
__android_log_print(ANDROID_LOG_DEBUG,TAG,"start monitor process :%d",target_pid);
while(1)
{
wait(&status);
if(WIFEXITED(status))
{
break;
}
if (ptrace(PTRACE_SINGLESTEP, target_pid, 0, 0) != 0)
__android_log_print(ANDROID_LOG_DEBUG,TAG,"PTRACE_SINGLESTEP attach error");
}
ptrace(PTRACE_DETACH, target_pid, NULL, NULL);
__android_log_print(ANDROID_LOG_DEBUG,TAG,"monitor finished");
return 0;
}
Я запускаю эту программу на оболочке. И я могу получить привилегию root. Если я изменю запрос на PTRACE_SYSCALL, программа будет работать нормально. Но если запрос PTRACE_SINGLESTEP, программа получит ошибку!