Xcode에서 SIGINT 처리하는 방법

SIGINT 프로그래밍의 예

SIGINT Handler 가 위와 같은 프로그래밍이 Xcode에 있다고 가정해 봅시다.

Xcode Terminal 에서 디버깅을 하게 되면, Xcode가 그 신호를 가로채서 제대로 디버깅을 하지 못하게 되는데, Xcode의 신호를 bypass 해서 내가 짠 Handler의 코드가 돌수 있게 하는 방법이 있습니다. (현재는 Xcode Version 12.0에서 동작함을 확인했습니다.)

Xcode에서, “Pause” 모드로 들어갑니다. (메뉴에서,Debug –> Pause, 또는 ^⌘Y). 그리고 lldb에서 다음과 같은 명령어를 내립니다.

process handle SIGINT -s false
process handle SIGINT -p true

그러면, Xcode의 Signal 처리 감시를 멈추고, 프로세스에 SIGINT를 보내게 됩니다. 이제, “Continue”로 계속 프로그램을 실행합니다. (메뉴에서, Debug –> Continue, 또는 ^⌘Y)

실제 Terminal에서,

killall -SIGINT <process name>

혹은

pgrep -fil <process name>
xxx
# Get the xxx PID number, and use this
kill -2 <Process PID number>

과 같이 실행하면, 프로그램의 signal hanlder가 불려지게 됩니다.

You May Also Like

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다