2017-09-21 3 views
0

리눅스에서 실행되는 동안 멈추는 멀티 스레드 프로세스가 있습니다. 하지만 pstack (별칭은 gstack)으로 멀티 스레드 버전이 없습니다. 따라서 gstack <pid>은 나에게 아무것도 제공하지 않습니다. 어떻게하면 (a) 이미 실행중인 프로세스에 gdb을 붙일 수 있습니까? (b) 개별 스레드의 스택 추적을 얻습니다. (c) 실행중인 프로세스의 스레드 ID를 알 수 있습니다 (알려진 경우). 프로세스가 멈춘 상태에서 실행중인 스레드가 있습니까?리눅스에서 교수형 프로세스 내에서 특정 스레드에 대한 스택 추적을 보는 방법

+0

(a) 적어도 gdb의 기본 맨 페이지를 읽었습니까? 나머지는 GDB 도움말 페이지를 읽었습니까? – Sneftel

답변

1

우선 디버깅을 위해 -O0 -ggdb 옵션으로 컴파일하십시오. 당신이 gdb를 아래에서 실행할 수있는 경우

, 단지

# gdb ./yourbinary 

를 실행하고 단지 문제를 기다립니다. . 공정 문제가 발생할 때, 당신은 단지, GDB에서 실행할 수없는 경우에

^C 당신을 누릅니다 두 경우 모두에서

# gdb --pid=<YOUR PID> 

입력 info threads을 당신은 모든 스레드를 볼 수 있습니다. 그런 다음 하나를 선택하면 bt 또는 다른 것을 볼 수 있습니다.

관련 문제