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가 불려지게 됩니다.