![gdb를 사용하여 코어 덤프에서 각 스레드의 "comm"을 가져올 수 있습니까?](https://linux55.com/image/200551/gdb%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%BD%94%EC%96%B4%20%EB%8D%A4%ED%94%84%EC%97%90%EC%84%9C%20%EA%B0%81%20%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98%20%22comm%22%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%AC%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
멀티스레딩을 사용하는 C 프로그램을 작성했습니다. 편의상 각 스레드의 스레드를 comm
별도의 값으로 설정했습니다. 이 값은 스레드 상태에 따라 변경될 수도 있습니다(클래식한 와 비슷함 sendmail
).
이제 프로세스가 종료되는 동안 코어를 덤프하면 프로세스가 실패했을 때 두 개의 스레드가 활성화된 것을 볼 수 있습니다(그 중 하나는 failed pthread_join
). 불행하게도 어떤 스레드가 어떤 스레드인지 파악하는 것은 쉽지 않으며 gcc에 최적화된 코드에는 종종 "접힌 스택 프레임"이 있어서 gcc의 역추적에서 호출 계층 구조가 실제로 표시되지 않습니다.
또한 이 문제는 재현하기 어렵기 때문에 코어 덤프에서 최대한 많은 정보를 얻고 싶습니다.
특히: comm
gcc를 사용하여 스레드의 필드를 표시할 수 있습니까?