【用途】 Linux内核动态调试特性,适用于驱动和内核各子系统调试。动态调试的主要功能就是允许你动态的打开或者关闭内核代码中的各种提示信息。适用于驱动和内核线程功能调试。 【使用方法】 依赖于CONFIG_DYNAMIC_DEBUG内核配置选项,一旦设置好,那么所有pr_debug()/dev_de ...
分类:
系统相关 时间:
2016-04-23 14:48:54
阅读次数:
239
dumpsys 【用途】Android系统提供的dumpsys工具可以用来查看系统服务信息与状态。 【使用说明】 adb shell dumpsys <service> [<option>] 【常用服务解释】 编号 服务名称 功能 1 account 显示accounts信息 2 activity ...
分类:
系统相关 时间:
2016-04-23 14:45:54
阅读次数:
397
本文介绍的内核调试宏属于静态调试方法,通过调试宏主动触发oops从而打印出函数调用栈信息。 1) BUG_ON 查看bug处堆栈内容,主动制造oops Linux中BUG_ON,WARN_ON用于调试,比如 #define BUG_ON(condition) do { / if (unlikely( ...
分类:
系统相关 时间:
2016-04-23 14:42:46
阅读次数:
205
内核态call trace 内核态有三种出错情况,分别是bug, oops和panic。 bug属于轻微错误,比如在spin_lock期间调用了sleep,导致潜在的死锁问题,等等。 oops代表某一用户进程出现错误,需要杀死用户进程。这时如果用户进程占用了某些信号锁,这些信号锁将永远不会得到释放, ...
分类:
系统相关 时间:
2016-04-23 14:41:10
阅读次数:
387
1 运行
运行,原来是胡哥所作;胡哥真是棒;
2 查看进程;多了EPROCESS列
每个进程都有一个 EPROCESS 结构,里面保存着进程的各种信息,和相关结构的指针。EPROCESS 结构位于系统地址空间,所以访问这个结构需要有ring0的权限。使用 Win2k DDK 的 KD (内核调试器)我们可以得到 EPROCESS 结构的定义。
3 查看驱动
可看到...
第18章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点,相比于用户级开发,内核调试的难度确实要艰苦得多。更可怕的是,它带来的风险比用户级别更高,内核的一个错误往往立刻就能让系统崩溃。 18.1 准备开始 一个bug。听起来很可笑,但确实需要一个确定的bug。如果错误总是能够重现的话, ...
分类:
系统相关 时间:
2016-03-31 23:25:29
阅读次数:
301
第18章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点,相比于用户级开发,内核调试的难度确实要艰苦得多。更可怕的是,它带来的风险比用户级别更高,内核的一个错误往往立刻就能让系统崩溃。 驾驭内核调试的能力(当然,最终是为了能够成功地开发内核)很大程度上取决于经验和对整个操作系统的把握。 ...
分类:
其他好文 时间:
2016-03-31 14:30:51
阅读次数:
186
第18章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点,相比于用户级开发,内核调试的难度确实要艰苦得多。更可怕的是,它带来的风险比用户级别更高,内核的一个错误往往立刻就能让系统崩溃。 驾驭内核调试的能力(当然,最终是为了能够成功地开发内核)很大程度上取决于经验和对整个操作系统的把握。 ...
分类:
其他好文 时间:
2016-03-31 14:10:01
阅读次数:
167
本文主要分析内核中与调试相关的几个内核函数。 首先是NtCreateDebugObject函数,用于创建一个内核调试对象,分析程序可知,其实只是一层对ObCreateObject的封装,并初始化一些结构成员而已。 我后面会写一些与window对象管理方面的笔记,会分析到对象的创建过程。 29号写的w ...
分类:
数据库 时间:
2016-03-31 01:56:54
阅读次数:
1792
这段时间复习了一下内核调试系统,注意看了一下printk的实现以及内核日志的相关知识,这里做一下总结。 一、printk概述 对于做Linux内核开发的人来说,printk实在是再熟悉不过了。内核启动时显示的各种信息大部分都是通过她来实现的,在做内核驱动调试的时候大部分 时候使用她就足矣。她之所以用 ...
分类:
系统相关 时间:
2016-03-29 12:30:27
阅读次数:
315