我想更深入地了解GDB如何了解线程。
我的问题针对的是它在GDB内部是如何工作的,调试线程没有任何问题,这完全是关于GDB的内部结构。
我找到GDB internals documentation,但线程部分现在是空的。
我所有的其他研究都让我质疑调试多线程程序,我似乎无法挖掘出我想要的精确信息。
编辑:
到目前为止,似乎GDB拦截信号(感谢ptrace?)并找出线程何时创建。但我想更准确地了解它是如何实际完成的。
我还有一个特殊的体系结构,它带有一个配置了--enable-threads = single的GDB。然而,GDB能够列出当前线程。这怎么可能?
欢迎每一条知识,有用的链接或文件。
感谢。
更新2014年3月5日
我查看了libthread_db并发现GDB允许提供一个自定义构建的库来调试线程(参见doc获取信息)
我试图通过实现td_thr_get_info
中定义的gdb/common/gdb_thread_db.h
函数来提供有关我的线程(ID,启动函数,堆栈等)的gdb信息。
仍然我无法向gdb提供有关我的主题上下文的任何信息,仍然在寻找关于该问题的任何线索。
感谢。
PS:This question似乎解决了同样的问题,但遗憾的是没有任何指示。