Re: How to get all threads of a definite process?

Doug Evans <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAP9bCMQigszFS1QzO99U+-4fsh1mVZmzUp0Fc=c7D6e3iOUpDQ@mail.gmail.com>
On Thu, Feb 5, 2015 at 10:15 PM, fei ding <[email protected]> wrote:
> BTW, I am talking about gdbserver, Thanks
>
> 2015-02-06 14:14 GMT+08:00 fei ding <[email protected]>:
>> Hi, everyone:
>>
>> I want to get all threads of one definite process, and I've found some
>> data structure such as 'all_threads', which is not what I want, i
>> guess. I don't understand the relationship between process and thread,
>> from the gdb-source-code-level (pointers for example),  and I don't
>> understand the meaning of 'ptid_t', does this mean 'process_thread_id'
>> ? and I've found this data's value is not the thread's PID that Linux
>> shell tell me, it just some number like 0 or 1.

You'll need to clarify. ptid_t is a struct of three values,
it is not "just some number like 0 or 1".

>>
>> If you know something about this, please help me. Thanks.

ptid_t is the type gdb uses internally to identify both processes and threads.
Its API is defined in gdb/common/ptid.[ch].

There is ptid_match() which could be given a process ptid for the filter,
and then you just need to iterate over all_threads, e.g. with
for_each_inferior_with_data, for threads that match (IOW for threads
that have the same process id).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.