
linux debug
DBPF
软件工程师,做过linux driver,arm应用工程师。
展开
-
printk()调试信息分级显示脚本的编写方法
printk()调试信息分级显示脚本的编写方法 大家都知道,在编写内核程序时printk()在中定义了一些用于调试的宏,它们是: KERN_EMERG "" 系统不可用 KERN_ALERT "" 必须采取措施 KERN_CRIT "" 严重状态 KERN_ERR "" 错误状态 KERN_WARNING "" 警告状态 KERN_转载 2013-06-06 18:48:43 · 757 阅读 · 0 评论 -
基于linux-2.6.38.8内核的wifi驱动分析
http://blog.youkuaiyun.com/libinqi86/article/details/7007685//参考给一些前辈们的文章1、sdio接口层解析SDIO总线 SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信。 CL转载 2013-09-24 21:04:20 · 1002 阅读 · 0 评论 -
__attribute__机制介绍 .
1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attrib转载 2013-09-01 21:04:31 · 478 阅读 · 0 评论 -
dump_stack的简单使用
刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。 我在自己的主机上试了一下dump_stack() Makefile文件obj-m := hello.oKERNELBUILD :=/lib/mo转载 2013-08-13 09:24:50 · 1996 阅读 · 0 评论 -
kernel panic
Linux kernel panic是很难定位和排查的重大故障,一旦系统发生了kernel panic,相关的日志信息非常少,而一种常见的排查方法—重现法–又很难实现,因此遇到kernel panic的问题,一般比较头疼。没有一个万能和完美的方法来解决所有的kernel panic问题,这篇文章仅仅只是给出一些思路,一来如何解决kernel panic的问题,二来可以尽可能减少发生kernel转载 2013-08-13 09:20:18 · 659 阅读 · 0 评论 -
BUG_ON
调试的时候很有用的东西:dump_stack 使用前,先在内核配置中把kernel debug选上:make menuconfig:kernel hacking-->kernel debug 作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息转载 2013-07-29 09:49:28 · 628 阅读 · 0 评论 -
Linux驱动程序工作原理简介
Linux驱动程序工作原理简介一、linux驱动程序的数据结构 二、设备节点如何产生? 三、应用程序是如何访问设备驱动程序的? 四、为什么要有设备文件系统? 五、设备文件系统如何实现? 六、如何使用设备文件系统? 七、具体设备驱动程序分析 1、转载 2013-06-19 16:45:38 · 1603 阅读 · 0 评论 -
adb shell下提示read-only file system
当使用adb shell时,向/system目录及其子目录写文件时经常提示“read-only file system”。其实产生该提示的原因很简单:/system是以ro模式挂载的,因此我们所要做的就是以读写模式(rw)重新挂载需要修改的目录(本例中为/system),具体流程如下:1. 进入adb shell并查看当前挂在情况命令号下输入:adb shell#mount这转载 2013-06-07 09:19:12 · 5358 阅读 · 0 评论 -
printk()函数的总结
我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在linux2转载 2013-06-06 21:01:52 · 679 阅读 · 0 评论 -
printk信息打印到指定文件 终端 网络
有的时候调试内核程序,经常要将信息打印到其他地方如指定文件或终端还有网络, 网络的话dreanice版主写过个netconsole我这里就不说了...打印到文件: #include #include #include #include #include #include #include #include转载 2013-06-06 20:59:41 · 4845 阅读 · 1 评论 -
printk 工作原理
printk()的参数个数是可变的,linux内核中提供了va_arg机制。该机制主要通过3个宏来实现: va_arg(ap, T):获取ap中的一个参数,该参数的类型是T,然后ap自加sizeof(T),跳过刚获取的参数。 va_end(ap):该宏定义为空。 va_start(ap, A):通过A获取参数列表的地址,A是printk的第一个参数(fmt)。一转载 2013-06-06 20:57:22 · 827 阅读 · 0 评论 -
浅谈Android系统开发中LOG的使用
在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便地使用。在这一篇文章中,我们简单介绍在Android内核空间和用户空间中LOG的使用和查看方法。一. 内核开发时LOG的使用。Android内核是基于Linux Kerne 2.36的,因此,Linux转载 2013-06-06 20:19:40 · 694 阅读 · 0 评论 -
Linux下Liberats SDIO wifi驱动分析
http://blog.chinaunix.net/space.php?uid=11114210&do=blog&id=2908493当内核检测到SDIO设备,开始执行if_sdio_probe: 整体流程: 1.lbs_add_card的时候指定并打开线程priv->main_thread = kthread_run(lbs_thread, de转载 2013-09-24 21:07:08 · 1066 阅读 · 0 评论