我使用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.数据很小,所以速度较低不会伤害任何东西,并且可靠地工作是值得的速度惩罚。
总结以上是内存溢出为你收集整理的Linux内核远程debugging:不能分解成debugging器全部内容,希望文章能够帮你解决Linux内核远程debugging:不能分解成debugging器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)