0

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

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

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

=谢谢。

4

1 回答 1

1

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

了解 GDB 如何处理进程管理问题总是一个好主意。在这种情况下,GDB 使用 libthread_db。这是一个库(手册页),根据(特定于平台的)API 管理对 TLS 的访问。

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

于 2013-02-12T19:33:37.680 回答