作者sxwdce123 (阿强)
看板LinuxDev
标题[问题] IPC kernel module 除错
时间Sat Oct 4 19:34:43 2014
介绍:我这个IPC module会使用kernel网路传输的API 与 另一台电脑作相连、也与本机
上层的管理应用程式相连。
问题描述:IPC kernel module执行传输到网路上会无法传出(使用send function)、或是
socket与上层AP相连时,也会无法传出。
这个程式码现在是没问题的,但是只要将 binder.c 3999、3283行 ,任一行注
解掉之後就会产生传输错误。3999、3283行在编译後为变成printk。
备注:之前在开发的过程就有遇过,只是那时候是变成需要注解掉 prink
这样传输才没有问题。
1. 请问这样的错误是为什麽发生的? 记忆体不够用吗、编译问题、我写法错误
、网路传输不能直接在kernel写
2. 是否有什麽方式 可以查看 执行到这边的状态?
ex:kgdb、objdump kgdb之前有用过,可是使用起来怪怪的、也不太会trace
不知如何trace到使用socket API 的module内容
使用环境:
Ubuntu 12.04.3 LTS
Linux ubuntu 3.9.0-030900-generic
#201304291257 SMP Mon Apr 29 17:06:25
UTC
2013 i686 i686 i386 GNU/Linux
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Source Code
https://www.dropbox.com/s/xf3p83wh361q07l/module.rar?dl=0
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.72.239
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1412422486.A.571.html
1F:推 drag: 原来你也是乡民~我昨天在Linkedin看到一样的问题 @@ 10/07 13:19
2F:→ drag: Line175: #define debug 0 试试看呢? 10/07 13:20
感谢回复,已经找到问题点了
把Send函式 这行改成这样就行了
struct msghdr msg= {.msg_flags= MSG_DONTWAIT+MSG_NOSIGNAL};
※ 编辑: sxwdce123 (59.127.3.127), 10/09/2014 17:10:47