Pytanie asm ("pułapka") na 64-bitowych urządzeniach z systemem iOS


W moim rodzimym makrze assert używam asm ("pułapki") na urządzeniach iOS (lub asm ("int3") na symulatorze iOS), aby włamać się do debuggera. Jednak w 64-bitowych kompilacjach dla urządzeń dostaję "nierozpoznaną instrukcję mnemoniczną" dla instrukcji pułapki. Czy istnieje odpowiednik arm64?

(Alternatywy takie jak __builtin_trap () lub podbicie (SIGINT) działają, ale mają pewne zachowania, które mi się nie podobają, te pierwsze nie pozwolą ci przejść obok przerwy, a ta druga jest funkcją, więc zawsze jesteś o jeden krok poniżej gdzie musisz być w stosie, kiedy się złamiesz.)


11
2017-12-20 22:54


pochodzenie




Odpowiedzi:


Udało mi się włamać do debuggera (i kontynuować później) asm("svc 0");. Nie jestem pewien, czy to jest to poprawny sposób, ale wydaje się, że wykonuje to zadanie.


9
2017-12-21 00:06



To jest niepoprawne. Wywołuje nieznaną syscall, a to podnosi Sygnał SIGSYS (Złe wywołanie systemowe) i debugger go przechwytuje. Myślę, że lepiej wyślij SIGSTOP zamiast - Pavel