c,如何使用ptrace命令获取线程局部变量的偏移量?

时间:2013-02-12 09:21:04

标签: c multithreading gdb local ptrace

这里我们试图修改我们自己的GDB版本以支持多线程环境。

到目前为止,我能够读取与每个线程相关的寄存器数据,但需要找出我们可以读取线程局部变量的方法。

为了读取线程局部变量,我需要知道如何使用ptrace命令计算偏移量。 如果有人知道这对我真有帮助。

=感谢。

1 个答案:

答案 0 :(得分:1)

ptrace(2)不支持TLS(线程本地存储)。

了解GDB如何处理流程管理问题总是一个好主意。在这种情况下,GDB uses libthread_db。这是一个库(man page),它根据(特定于平台的)API管理对TLS的访问。

有关如何在Linux中实施TLS的详细信息,请参阅Ulrich Drepper的Elf Handling for Threading Local Storage