멀티스레딩을 사용하는 C 프로그램을 작성했습니다. 편의상 각 스레드의 스레드를 comm
별도의 값으로 설정했습니다. 이 값은 스레드 상태에 따라 변경될 수도 있습니다(클래식한 와 비슷함 sendmail
).
이제 프로세스가 종료되는 동안 코어를 덤프하면 프로세스가 실패했을 때 두 개의 스레드가 활성화된 것을 볼 수 있습니다(그 중 하나는 failed pthread_join
). 불행하게도 어떤 스레드가 어떤 스레드인지 파악하는 것은 쉽지 않으며 gcc에 최적화된 코드에는 종종 "접힌 스택 프레임"이 있어서 gcc의 역추적에서 호출 계층 구조가 실제로 표시되지 않습니다.
또한 이 문제는 재현하기 어렵기 때문에 코어 덤프에서 최대한 많은 정보를 얻고 싶습니다.
특히: comm
gcc를 사용하여 스레드의 필드를 표시할 수 있습니까?