Tôi đang cố gắng triển khai macro nội dung tùy chỉnh (tương tự như những gì assert.h có), nhưng tôi muốn có thể tiếp tục thực hiện sau khi tôi nhận được và khẳng định.Xác nhận/breakpoint có thể tiếp tục trên iOS như __debugbreak() với trình biên dịch MS
Ví dụ, một ASSERT
thực hiện như vậy có thể là:
#define ASSERT(expr) ((void)((!!(expr)) || (__debugbreak(), 0)))
__debugbreak là một chức năng nội tại trong các trình biên dịch Microsoft chèn phần mềm breakpoint, tương đương với _asm int 3
trong x86. cho iOS có nhiều cách khác nhau để triển khai __debugbreak:
__asm__("int $3");
cho x86.__asm__("bkpt #0");
cho cánh tay thông thường.__asm__("brk #0");
cho arm64- __builtin_trap()
raise(SIGTRAP)
nhưng với tất cả trong số họ khi hit khẳng định của tôi, tôi có thể không chỉ đơn giản là bước qua và tiếp tục con đường tôi có thể làm gì khi làm việc với visual studio; khi một cái gì đó khẳng định trong iOS của tôi xây dựng nó bị mắc kẹt tại khẳng định và tôi không có sự lựa chọn nhưng để chấm dứt, tôi thậm chí không thể di chuyển con trỏ hướng dẫn bằng tay và bỏ qua khẳng định.
Có thể triển khai các xác nhận trên iOS có thể đột nhập vào trình gỡ lỗi và vẫn cho phép tôi tiếp tục thực hiện không?
__asm __ ("int $ 3"); hoạt động tốt cho tôi – Spads
@Spads 'int $ 3' hoạt động trong trình mô phỏng chỉ vì nó là x86, không phải nhánh. – Pavel
Điểm công bằng. Không kiểm tra trên iPhone. – Spads