I have a multithreaded Linux application written in C/C++. I have chosen names for my threads. To aid debugging, I would like these names to be visible in GDB, "top", etc. Is this possible, and if so how?
(There are plenty of reasons to know the thread name. Right now I want to know which thread is taking up 50% CPU (as reported by 'top'). And when debugging I often need to switch to a different thread - currently I have to do "thread apply all bt
" then look through pages of backtrace output to find the right thread).
The Windows solution is here; what's the Linux one?
prctl()
(andpthread_setname_np()
did not work for me. It changed the name of ALL my threads. So rather useless. Instead I had to write the name to the comm file. See: #68676907 – Leoleod