我正在开发一个采用(定制)微线程解决方案的庞大程序。有时我需要调试崩溃。在这段时间内,能够从一个微线程切换到另一个微线程是很有用的。
如果我正在进行实时调试,我可以将所有寄存器替换为来自微线程上下文的寄存器。我已经写了一个宏来做到这一点,而且效果非常好。
问题是如果我正在进行事后调试(来自核心文件),我无法更改寄存器值。在这种情况下,我无法告诉GDB改变其当前帧的概念,因为在这种情况下所有寄存器都被认为是只读的。
有没有办法告诉GDB我的自定义上下文管理?
Shachar
答案 0 :(得分:0)
在gdb中没有一种简单的内置方法。
我认为最简单的方法可能是编写一个gdbserver版本,它可以读取你的核心文件,并将你的微线程呈现给gdb作为真正的线程。至少有一个gdbserver可以读取核心文件,所以也许它并不疯狂。但是,我无法确定地说。