欢迎来到天天文库
浏览记录
ID:19756370
大小:370.50 KB
页数:10页
时间:2018-10-05
《linux调试技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux调试技术吴士力e-mail:wsl.wushili@gmail.com调试的概念调试(debug)调试就是对程序进行查错和排错,以保证程序的正确性。程序的正确性不仅仅表现在正常功能的完成上,更重要的是对意外情况的正确处理。调试的基本方法变量有正确的值执行正确的条件路径函数参数的正确传递调试器内存调试工具危险的内存比尔盖兹:内存好比雷区内存泄露、缓冲区溢出等常见内存错误,破坏大、隐蔽memwatch1.gcc-otest-DMEMWATCH-DMW_STDIOmemtest.cmemwatch.c2../test3.mem
2、watch.log添加系统调用1.在/include/linux/syscalls.h中增加要添加的系统调用的声明asmlinkagelongsys_test(void);2.在/arch/arm/include/asm/unistd.h中增加系统调用号的定义#define__NR_test(__NR_SYSCALL_BASE+361)3.在/kernel/sys.c中实现系统调用函数asmlinkagelongsys_test(void){printk("pid:%d,thisistestcall.",current->p
3、id);return0;}4.在/arch/arm/kernel/call.S中加入系统调用表的初始化部分/*361*/CALL(sys_test)5.生成内核镜像添加系统调用测试1.测试程序#include#include#includeintmain(){inti=10;i=syscall(361);printf("aftersyscall:i=%d",i);return0;}2.测试结果pid:859,thisistestcall.aftersysc
4、all:i=0OOPSoopsoops是一种反映内核程序错误引发时的系统状态的机制oops包含CPU的状态,进程的状态,内核堆、栈的状态等制造oops*(int*)0=0;段错误asmlinkagelongsys_test(void){printk(“pid:%d,thisistestcall.”,current->pid);*(int*)0=0;return0;}OOPS分析UnabletohandlekernelNULLpointerdereferenceatvirtualaddress00000000pgd=c1ca
5、c000[00000000]*pgd=31c2b031,*pte=00000000,*ppte=00000000Internalerror:Oops:817[#1]Moduleslinkedin:CPU:0Nottainted(2.6.29#9)PCisatsys_test+0x28/0x34LRisatrelease_console_sem+0x1a4/0x1dcpc:[]lr:[]psr:60000013sp:c1c9df98ip:c1c9ded8fp:c1c9dfa4r10:40158
6、64cr9:c1c9c000r8:c002efa4r7:00000169r6:beb2edccr5:00000000r4:0000000ar3:c037ddf4r2:80000013r1:000016ecr0:00000000Flags:nZCvIRQsonFIQsonModeSVC_32ISAARMSegmentuserControl:0000317fTable:31cac000DAC:00000015Processs(pid:859,stacklimit=0xc1c9c260)Stack:(0xc1c9df98to0xc1c9
7、e000)df80:00000000c1c9dfa8dfa0:c002ee00c005dde400000000beb2edcc00000169beb2edf4beb2edfc0000000a……Backtrace:[](sys_test+0x0/0x34)from[](ret_fast_syscall+0x0/0x2c)Code:e59f0010e59310ccebffcfd4e3a00000(e5800000)---[endtrace4191333ea044b6a0]---Segmenta
8、tionfaultOOPS定位PCisatsys_test+0x28/0x34(Oops发生在sys_test+0x28处)通过GDB对vmlinux进行调试1.编译时打开compliewith debug info选项2.grepsys_test
此文档下载收益归作者所有