programing

리눅스에서 스레드 이름을 지정하는 방법은 무엇입니까?

batch 2023. 7. 10. 22:11
반응형

리눅스에서 스레드 이름을 지정하는 방법은 무엇입니까?

C/C++로 작성된 멀티스레드 리눅스 애플리케이션이 있습니다.스레드 이름을 선택했습니다.디버깅을 돕기 위해 GDB, "top" 등에 이러한 이름이 표시되기를 원합니다.이것이 가능하며, 그렇다면 어떻게 가능합니까?

(스레드 이름을 알아야 하는 이유는 많습니다.지금 당장은 어떤 스레드가 CPU의 50%를 차지하는지 알고 싶습니다('top'에서 보고됨).디버깅할 때는 종종 다른 스레드로 전환해야 합니다. 현재는 "해야 합니다."thread apply all bt그런 다음 백트레이스 출력 페이지를 검토하여 올바른 스레드를 찾습니다.

Windows 솔루션은 여기에 있습니다. Linux 솔루션은 무엇입니까?

Posix 스레드?

이것은 분명히 편집할 수는 없지만, 어디로 사냥을 가야 할지에 대한 아이디어를 제공할 것입니다.나는 그것이 옳은지조차 확신할 수 없습니다.PR_명령입니다, 하지만 그렇다고 생각합니다.오랜만에...

  #include <sys/prctl.h>
  prctl(PR_SET_NAME,"<null> terminated string",0,0,0)

ACE와 같은 라이브러리를 사용하는 경우 새 스레드를 만들 때 스레드 이름을 지정하는 방법이 있습니다.

BSD Unix에는 pthread_set_name_np 호출도 있습니다.

그렇지 않으면 Pouspawn이 언급한 prctl을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/778085/how-to-name-a-thread-in-linux

반응형