如何在linux上获得正在运行的线程的起始地址?

时间:2014-03-14 20:24:28

标签: linux multithreading memory-address

问题陈述

我正在尝试获取在pthread_create()调用中传递的正在运行的线程的start_routine的地址。

到目前为止的研究

显然不在/ proc / [tid] / stat或/ proc / [tid] / status。

我发现start_routine是struct pthread的成员,并由pthread_create设置。[1] 如果我知道这个结构的地址,我可以读取start_routine地址。

我还发现在调试库thread_db.h中定义了td_thr_get_info。[2] 它使用有关线程的信息填充结构,包括start函数。[3]但它需要一个struct td_thragent作为参数,我不知道如何正确创建它。

链接

[1] http://fxr.watson.org/fxr/source/nptl/pthread_create.c?v=GLIBC27;im=excerpts#L455

[2] http://fxr.watson.org/fxr/source/nptl_db/td_thr_get_info.c?v=GLIBC27#L27

[3]请参阅评论,因为我不允许发布超过2个链接。

1 个答案:

答案 0 :(得分:0)