1对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试。例如设置断点、逐步跟踪代码、输出调试信息等。 2打印内核调试信息:printk,该函数与printf用法类似,但是printk运行在内核空间,而printf运行在用户空间。 3printk文件是一个简单的有4个数字组成的文本文 ...
分类:
系统相关 时间:
2016-06-24 09:15:12
阅读次数:
204
Linux反汇编调试方法 Linux内核模块或者应用程序经常因为各种各样的原因而崩溃,一般情况下都会打印函数调用栈信息,那么,这种情况下,我们怎么去定位问题呢?本文档介绍了一种反汇编的方法辅助定位此类问题。 代码示例如下: #include <signal.h> #include <stdio.h> ...
分类:
系统相关 时间:
2016-06-20 00:42:43
阅读次数:
254
(一) 打印内核调试信息:printk Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现。 Printk函数的原型如下:asmlinkage int printk(const char *f ...
分类:
系统相关 时间:
2016-06-19 22:53:57
阅读次数:
216
什么是core dump? 分析core dump是Linux应用程序调试的一种有效方式,像内核调试抓取ram dump一样,core dump主要是获取应用程序崩溃时的现场信息,如程序运行时的内存、寄存器状态、堆栈指针、内存管理信息、函数调用堆栈信息等。 Core dump又称为“核心转储”,是L ...
分类:
系统相关 时间:
2016-06-19 16:57:39
阅读次数:
226
心得体会:本章主要讲嵌入式Linux的调试技术。对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试。刚开始讲了打印内核调试信息:printk,这个函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。执行完相关的命令后,会要求选择 ...
分类:
其他好文 时间:
2016-06-16 23:03:31
阅读次数:
212
以下内容主要摘录自《Linux安全体系分析与编程》
1、基本原理
(1)在UBOOT里设置console=ttySAC0或者console=tty1
这里是设置控制终端,tySAC0 表示串口, tty1 表示lcd
(2)内核用printk打印
内核就会根据命令行参数来找到对应的硬件操作函数,并将信息通过对应的硬件终端打印出来!
2、printk及控制台的日志级别
函数...
分类:
系统相关 时间:
2016-05-26 14:46:03
阅读次数:
252
一 调试前的准备
二 内核中的bug
三 内核调试配置选项
1 内核配置
2 调试原子操作
四 引发bug并打印信息
1 BUG()和BUG_ON()
2 dump_stack()
五 printk()
1 printk函数的健壮性
2 printk函数脆弱之处
3 LOG等级
4 记录缓冲区
5 syslogd/klogd
6 dmesg...
分类:
系统相关 时间:
2016-05-18 19:25:24
阅读次数:
365
以下内容主要学习自debug hacks一书。 有关内核调试方面的技巧,我更多的是将其映射为应用程序的调试技巧。我觉得大部分都是线程间同步的问题。 1.对于NULL指针的访问。 这个问题一般来讲是比较容易确定的,一般来讲就是未申请空间,或者申请空间失败了但是没有检查错误。这个可以通过backtrac ...
分类:
其他好文 时间:
2016-05-18 17:39:08
阅读次数:
115
strace 【用途】 strace是一个功能强大的调试、分析、诊断工具,跟踪程序或进程执行时的系统调用和所接收的信号。可将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件。 【命令格式】 strace [ -dffhiqrtttTvxx ] [ -a column ] [ ...
分类:
系统相关 时间:
2016-04-23 15:03:01
阅读次数:
260
Kprobes 【用途】【参考kernel/Documentation/kprobes.txt帮助文档】 Kprobes是一个轻量级内核调试工具,同时又是其他一些更高级的内核调试工具(如perf和systemtap)的基础,在Linux 4.0内核版本中,eBPF特性也寄生于kprobe之上。 【原 ...
分类:
系统相关 时间:
2016-04-23 15:00:42
阅读次数:
325