教 gdb 理解核心文件中的微线程
Teaching gdb to understand micro-threads from core files
我正在开发一个采用(定制)微线程解决方案的大型程序。有时我需要调试崩溃。在这种情况下,能够从一个微线程切换到另一个微线程很有用。
如果我正在进行实时调试,我可以将所有寄存器替换为来自微线程上下文的寄存器。我写了一个宏来做到这一点,它工作得很好。
问题是,如果我正在进行事后调试(从核心文件),则无法更改寄存器值。在这种情况下,我无法告诉 GDB 更改其当前帧的概念,因为在这种情况下,所有寄存器都被视为只读。
有没有办法告诉 GDB 我的自定义上下文管理?
沙查尔
在 gdb 中没有一个简单的内置方法可以做到这一点。
我认为最简单的方法可能是编写一个可以读取核心文件的 gdbserver 版本,并将您的微线程作为真实线程呈现给 gdb。 至少有一个gdbserver可以读取核心文件,所以也许它并不难。 但是,我真的不能肯定地说。
相关文章:
- boost::文件系统::recursive_directory_iterator多线程安全
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在C++中写入来自不同线程的文件
- 线程 1 从文件读取,就像线程 2 写入同一文件一样
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- C++中的多线程文件哈希
- C++:如何在线程中读取二进制文件并将其写入另一个线程?
- 在Qt中使用工作线程将数据写入文件的正确方法是什么?
- 我们是否需要互斥锁来执行多线程文件 IO
- Borland C++ 5.02 中使用第三方头文件的多线程
- 多线程文件 IO 程序在线程数增加时行为不可预测
- 多线程文件读取为每个线程生成相同的结果
- 多线程文件读取
- 多线程文件保存操作
- 如何在C++中实现多线程文件处理
- 用于从本地PC接收文件的简单服务器线程-文件暂时为空
- 在c++中实现高效多线程文件I/O
- 多线程文件流
- 使用c++将多线程文件复制到不同的硬盘驱动器