2

我正在开发一个使用(定制的)微线程解决方案的大型程序。有时我需要调试崩溃。在这种情况下,能够从一个微线程切换到另一个微线程是很有用的。

如果我正在进行实时调试,我可以将所有寄存器替换为来自微线程上下文的寄存器。我写了一个宏来做到这一点,而且效果很好。

问题是,如果我正在进行事后调试(来自核心文件),我无法更改寄存器值。在这种情况下,我无法告诉 GDB 改变它对当前帧是什么的概念,因为在这种情况下所有寄存器都被认为是只读的。

有没有办法告诉 GDB 我的自定义上下文管理?

沙查尔

4

1 回答 1

0

在 gdb 中没有一种简单的内置方法可以做到这一点。

我认为最简单的方法可能是编写一个 gdbserver 版本,它可以读取您的核心文件,并将您的微线程作为真正的线程呈现给 gdb。至少有一个 gdbserver 已经可以读取核心文件,所以也许这并不难。但是,我真的不能肯定地说。

于 2013-11-18T06:33:24.327 回答