gpt4 book ai didi

Linux内核远程调试: Can not break back into debugger

转载 作者:IT王子 更新时间:2023-10-29 00:44:33 25 4
gpt4 key购买 nike

我正在使用 kgdb/远程 gdb 调试 linux ubuntu 内核。我有 2 台计算机 - ubuntu 目标和 windows 主机。计算机使用串行端口和零调制解调器电缆连接。

在目标 ubuntu 系统中启用了 KGDB 支持,KGDB 的命令选项:

kgdbwait kgdboc=ttyS0,115200

在我的 Windows 系统上,我有 MinGW gdb build (x86_64):

GNU gdb (GDB) 7.4 Copyright (C) 2012 Free Software Foundation, Inc. This GDB was configured as "x86_64-w64-mingw32".

我启动我的目标系统并等待远程调试器连接。我在 GDB 窗口中输入以下命令:

(gdb) set remotebaud 115200                                                
(gdb) target remote COM4

我的 gdb 能够连接到目标并打印以下内容:

Remote debugging using COM4
???() at kernel/debug/debug_core.c:1043 wmb(); /* Sync point after breakpoint */

然后我输入命令来设置断点,以便在操作系统启动时能够返回到 gdb:

(gdb) b sys_sync

Breakpoint 1 at 0xffffffff8124a710

我还在另一次相同设置的运行中尝试了硬件辅助断点:

(gdb) hbreak sys_sync

当我从目标 ubuntu 控制台输入同步命令时,这个断点设置应该会导致内核返回调试器。

我在 GDB 中点击继续后,操作系统启动正常,但我无法将控制权带回 gdb。我尝试在 sys_sync 上设置断点,我试过了

echo g > /proc/sysrq-trigger

在所有情况下都没有成功。

非常有趣:如果我最初没有在 sys_sync 中设置断点,稍后输入同步命令将不会执行任何操作。如果我设置了 sys_sync 断点,稍后输入同步命令会完全停止目标计算机 - 所以我认为在这种情况下实际上设置了断点。

如何进入调试器? GDB 对任何 CTrl-C 命令都没有反应,所以在我最初点击继续后无法继续调试。

可能是体系结构不兼容(Windows gdb - Linux 目标)- 但似乎确实设置了断点。

请帮忙

最佳答案

在您的测试机上:以 super 用户身份登录。

sudo su

然后生成一个 sysrq-trigger

echo g > /proc/sysrq-trigger

在此之后,您的目标机器应该卡住,但开发机器应该进入目标。

关于Linux内核远程调试: Can not break back into debugger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29149213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com