C로 만든 프로그램이 실행 중에 시그널을 받아서 죽을 때 프로그램의 program counter, stack pointer를 출력하고 나서 종료 하도록 하고 싶습니다.
core dump나 디버거를 통해서 확인 하는것이 아니라 프로그램의 시그널 처리 루틴에서 출력을 할수 있는 방법이 있을까요? 시그널 처리 루틴이 아니더라도 방법이 없을까요?
sigaction(2)에 SA_SIGINFO를 써서 handler를 등록하고, handler의 세번째 인자로 전달된 ucontext_t를 뒤지면 register 값을 얻을 수 있기는 합니다.
-- C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
sigaction(2)에
sigaction(2)에 SA_SIGINFO를 써서 handler를 등록하고, handler의 세번째 인자로 전달된 ucontext_t를 뒤지면 register 값을 얻을 수 있기는 합니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기