상당히 큰 Qt-3 응용 프로그램을 디버깅하고 있습니다. 응용 프로그램은 많은 사전 처리를 수행 한 다음 SIGPIPE 신호를받습니다. 나는 SIGPIPE를 얻 자마자 백 트레이스의 몇 가지 항목을 적어두고 있습니다.타사 라이브러리에서 SIGPIPE 신호 디버깅
#0 .. __write_nocancel() from libpthread.so
#1 .. _IceTransFreeConnInfo() from libICE.so.6
#2 .. _IceWrite() from libICE.so.6
#3 .. _IceFlush() from libICE.so.6
우리의 응용 프로그램에는 신호 처리기가 있습니다. 내가 한 것은 signal(SIGPIPE, SIG_IGN)
을 사용하여 SIGPIPE를 무시하고,이 신호를 받더라도 내 앱이 계속 될 것이라고 생각했습니다. 하지만 지금은 그렇게 작동하지 않을 것이라는 것을 깨달았습니다. SIGPIPE를받은 후에도 계속 존재할뿐입니다.
이 문제를 디버깅하는 방법에 대해 나는 단서가 없습니다. 이 신호는 앱에서 직접 소켓 호출을 통해 생성 된 신호가 아닙니다. 그것은 libICE에서오고 있습니다. 나 맞아? 이것을 디버깅하는 방법에 대한 힌트를주십시오.
미리 감사드립니다.
응용 프로그램 자체에서 신호를'raise() '할 때 디버거에서 그 신호를 잡을 수 있어야합니다. – PlasmaHH
@PlasmaHH :'raise()'에 대해 누가 말 했나요? – SamB