【发布时间】:2014-03-14 20:24:27
【问题描述】:
问题陈述
我正在尝试获取在 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] 它用有关线程的信息填充结构,包括启动函数。 [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 个链接。
【问题讨论】:
-
你为什么要问,你为什么需要这个?请编辑您的问题以改进它。
标签: linux multithreading memory-address