【发布时间】:2016-08-11 02:51:03
【问题描述】:
我想知道在调试远程内核时是否确实有办法在 gdb 和 ddb 之间切换。
我已经在 gdb(或者更确切地说是 kgdb)提示符下。从这里如何切换到被调试机器上的本地ddb?
我的内核配置文件已经包含 options BREAK_TO_DEBUGGER 并且我已经配置了 GDB 和 DDB:
options GDB
options DDB
根据developer's handbook,“每次键入 gdb,模式将在远程 GDB 和本地 DDB 之间切换。为了立即强制执行下一个陷阱,只需键入 s(步骤)。您的托管 GDB 现在将获得对目标内核的控制权:"
所以,我确实尝试在 gdb 提示符下输入“gdb”(有趣的是:D),正如预期的那样,这是一个无法识别的命令。显然,这个命令应该在 ddb 提示符下输入。但我的问题是,如何从正在运行的机器中掉线到 ddb,其串行端口(尽管是虚拟的)远程连接到另一台机器的 KGDB?当远程 GDB 正在侦听并且我使用 sysctl debug.kdb.enter=1 强制恐慌时,它确实会落入远程 KGDB。但是,当它不听时,系统就会死机。
我想要的是在本地机器上输入 ddb。使用它进行一些调试;将最好使用 KGDB 完成的事情放到远程 KGDB,然后在我完成后切换回本地 DDB。
有没有办法做到这一点?
【问题讨论】:
标签: debugging remote-debugging freebsd kgdb