SIGTRAP : 調試器設置斷點時發出的信號
// arm 斷點指令
Thumb 0x01 0xde
Thumb2 0xf0 0xf7 0x00 0xa0
Arm 0x01 0x00 0x9f 0xef
</pre><pre code_snippet_id="1722808" snippet_file_name="blog_20160621_5_730062" name="code" class="html">//intel
CC int3
CD 03 int 0x3
當促發指令斷點時候,這是操作系統會收到 SIGTRAP 信號,並傳給調試器,調試器收到信號會還原被設置斷點指令,退回pc到值斷點處。
那麼問題來了,當我們自幾signal 出 SIGTRAP 信號處理函數 sigfun
signal(SIGTRAP,sigfun);
黨有調試的情況下,調試器接管了 SIGTRAP 信號,那我們原本可以在 程序中 sigfun 還原斷點指令的工作就得不到運行,而這個斷點又不是我們在調試器中主動設置的,調試器也沒給我們記錄,那麼就會陷入一個死循環,達到調試目的。