«(os / kern) неверный аргумент» при использовании thread_set_state - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь установить точку останова, используя task_set_state и отладочные регистры, но каждый раз, когда я пытаюсь ее запустить

void breakpoint(mach_port_t thread, mach_vm_address_t addr) {
x86_debug_state_t regs;
mach_msg_type_number_t count = x86_DEBUG_STATE_COUNT;
thread_get_state(thread, x86_DEBUG_STATE,(thread_state_t)&regs, &count);
regs.uds.ds64.__dr7 = (uintptr_t)addr;
int ret = thread_set_state(thread,x86_DEBUG_STATE,(thread_state_t)&regs,count);
printf("%s",mach_error_string(ret));
}

Я почти уверен, что это как-то связано с изменением регистра отладки, потому что, если я удаляю эту строку, код работает нормально.

...