理解新线程(Linux systag)的GDB输出



我目前正在调试一个使用pthreads的应用程序。当我附加GDB时它连续打印如下形式的消息:

<<p>[新线程strong> a_hex_number (LWP a_dec_number )]

我假设a_hex_number是一个地址,但它是谁的地址?我假设a_dec_number是创建线程的唯一标识符,是吗?

我的假设正确吗?谁能给我更多关于数字及其含义的细节?我已经读了这份文件,但我仍然有困难得到完整的图片。也许一些关于Linux系统的信息会对我有很大帮助。

我假设a_hex_number是一个地址,但它是谁的地址?

这是一个线程描述符的地址(在Linux上也是pthread_self()调用的结果)。

我假设a_dec_number是创建线程的唯一标识符,是吗?

不,它是内核分配给这个线程的线程id。这和在ps输出中看到的是一样的(在Linux上,clone(2)线程和进程在内核级别几乎没有区别)。

最新更新