微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux内核远程debugging:不能分解成debugging器

我使用kgdb / remote gdbdebugginglinux ubuntu内核。 我有2台电脑 – Ubuntu的目标和Windows主机。 计算机使用串行端口和空调制解调器电缆连接。

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

kgdbwait kgdboc=ttyS0,115200

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

如何将我的调度程序添加到Linux内核

Linux,将在第一次读取或第一次写入时归零页面错误

以编程方式访问graphics卡时钟

有人可以指向一个bitbake或开放式教程吗?

如何使用筛选器驱动程序(内核)来捕获文件访问尝试,并提供允许/拒绝(用户)对话框?

GNU gdb(GDB)这个GDB被configuration为“x86_64-w64-mingw32”。

我开始我的目标系统,并等待远程debugging器连接。 我在GDB窗口中input以下命令:

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

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

使用COM4进行远程debugging

()在kernel / debug / debug_core.c:1043 wmb(); / *断点后的同步点* /

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

(gdb) b sys_sync

断点1在0xffffffff8124a710

我也在另一个相同的设置运行尝试硬件辅助断点:

(gdb) hbreak sys_sync

当我从目标ubuntu控制台input同步命令时,这个断点设置应该导致内核回到debuger。

当我在GDB中打开继续,操作系统启动正常,但我永远不能把控制权交还给gdb。 我试过在sys_sync上设置断点,我试过了

echo g > /proc/sysrq-trigger

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

非常有趣的是,如果我最初不在sys_sync中设置断点,那么稍后input同步命令什么也不做。 如果我设置sys_sync断点,稍后input同步命令完全停止目标计算机 – 所以我想在这种情况下设置断点。

如何闯入debugging器? GDB变得​​对任何CTrl-C命令没有反应,所以在我最初命中之后没有办法继续debugging继续。

可能是架构不兼容(Windows gdb – Linux目标) – 但似乎是断点确实设置。

请帮忙

Linux内核代码中的EXPORT_SYMBOL_GPL是什么?

内核:获取命令行和pid_parent在do_execve_common?

什么语言允许我与操作系统的内核进行交互

释放克隆的skb(使用skb_clone)将释放原始的skb?

/ proc / kmsg和dmsg有什么区别?

在您的测试机器上:以超级用户身份登录

sudo su

然后生成一个sysrq触发器

echo g > /proc/sysrq-trigger

之后,你的目标机器应该冻结,但开发机器应该打破目标。

降低两端的波特率。 根据我的经验,虽然115200波特率在理论上是支持的,但很少正常工作。 我建议把波特率降到9600(两端),并找到成功。 一旦完成,那么你可以一步一步地提高速度。 我很少能够得到kgdb超过34K波特可靠地工作,往往更低。 而且我也确保使用适当的RTS / CTS交叉连接器,一些商店购买,和一些手工制作。 它从来没有问题,我认为这个问题是在SUT端kgdboc一些问题,并不总是工作在115200波特率。 解决方案只是将波特率降低到9600.数据很小,所以速度较低不会伤害任何东西,并且可靠地工作是值得的速度惩罚。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐