안녕하세요 gdb사용법 질문 드립니다.
진행 하던 프로젝트속의 특정 메시지 수진 스레드가 교착 상태에 빠졌는지... 응답을 하지 않는 경우가 있습니다.
해당 스레드의 ID를 알고 있는 경우,
gdb로 실행중인 프로세스에 Attach해서 어디에 어느함수에서 블럭킹 되어 있는지 찾고싶은데 어떻게 하면 되나요?
gdb콘솔창에서 사용하고 있는데.. 이렇게 사용하려면 어떻게 해야 할지 모르겠네요 ㅠㅠ
(gdb) info thread # 총 thread id list (gdb) thread XXX # 현재 thread를 XXX로 전환 (gdb) bt # 현재 thread callstack 출력 (gdb) thread apply all bt # 모든 thread callstack 출력
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
해당 스레드로 이동해서 where 입력하니 호출 스텍이 나오고 어디서 문제가 생겼는지 볼 수 있네요..
예상대로 lock 해놓고 unlock 안한 부분이 있는지 모든 스레드들이 lock에서 멈추어 있네요.
덕분에 해결 했습니다 감사합니다.
텍스트 포맷에 대한 자세한 정보
<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]
(gdb) info thread # 총 thread
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
감사합니다.
해당 스레드로 이동해서 where 입력하니 호출 스텍이 나오고 어디서 문제가 생겼는지 볼 수 있네요..
예상대로 lock 해놓고 unlock 안한 부분이 있는지 모든 스레드들이 lock에서 멈추어 있네요.
덕분에 해결 했습니다 감사합니다.
댓글 달기