使用KGDB帮助解密一条错误消息 - 来自目标的虚假跟踪状态回复:E22

时间:2010-05-19 10:15:27

标签: gdb linux-kernel

我正在使用gdb连接到通过以太网用KGDB修补的2.6.31.13 linux内核,当我尝试分离调试器时,我得到了这个:

(gdb) quit
A debugging session is active.

 Inferior 1 [Remote target] will be killed.

Quit anyway? (y or n) y
Bogus trace status reply from target: E22

之后会话仍然打开,我可以继续使用ctrl + d,调试器不会退出。

我在谷歌中搜索过该消息,结果只有5个(并且没有一个是有用的: - /)。

知道它可能是什么以及如何解决它?

2 个答案:

答案 0 :(得分:2)

如果你清除了目标上的所有断点并且从最新的断点开始“C”(假设目标代码没有崩溃等等),我认为你会安全:在运行时,kgdb不会无论如何要跟你的gdb说话,因为如果我记得,它只会在等待命令时停止(在断点或异常中)处理链接。 快速序列中的几个Ctrl-C如果需要在gdb中获得控制权,那么“q”,就是这样。

这至少是我在调试ko时的经验...

我怀疑gdb是这么说的,因为它没有意识到它正在与kgdb而不是远程gdb服务器通信。我不认为kgdb接受杀死内核线程,因为调试器已经退出了,无论如何!

嗯,事后补充: 你在谈论kgdb'lite',现在是内核树的一部分,是吗?因为那是我唯一经历过的......

6月3日PS:

在我转移到2.6.32内核之前,我从未见过你提到的确切消息(作为我的dev和目标机器迁移到Lucid的一部分)。然后,出乎意料的是,我也碰到了它。在这里,它似乎发生在无望的情况下(比如在错过断点或单步后似乎失控的段错误或kgbd)。到目前为止我找到的唯一办法是在开发机器上启用ddd(gdb)并重新启动目标。但好消息是2.6.32中的kgdb似乎比Karmic(2.6.31)中的kgdb稳定得多。

答案 1 :(得分:0)

ctrl + z应该可以帮助你退出。