Linux Debugging ls,ps,top,etc. printk() /proc i386提供的调试机制(断点,信号,单步执行)

Slides:



Advertisements
Similar presentations
进 程. “ 程序 ” 和 “ 进程 ” 进程是 OS 对 CPU 执行的程序的运行过程的一种抽象。进程有自 己的生命周期,它由于任务的启动而创建,随着任务的完成(或 终止)而消亡,它所占用的资源也随着进程的终止而释放。 Linux 内核中通常把进程称为任务,每个进程主要通过一个称为进程描 述符(
Advertisements

第一章 微型计算机系统概述 1.1 计算机的发展与应用 微型计算机的发展与分类 微型计算机的应用
嵌入式系统简介 Introduction to Embedded System
嵌入式系统与单片机 北京科技大学电子信息系.
第一章 计算机基本知识 网考小组.
第二部分 嵌入式硬件系统 第2章 嵌入式处理器 第3章 ARM内核与ARM处理器 第4章 嵌入式系统的外围设备.
嵌入式系统与结构 —基于ARM的体系结构和应用开发
基于s3c44B0X嵌入式uCLinux系统原理及应用
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
嵌入式控制系统 学时:45,1~12周,第13周闭卷考试 实验课:18学时,穿插在本课程间进行
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
第一章 嵌入式系统概况 大连理工大学 马洪连.
門神 在傳統觀念中,門是居住環境中與外界相通的出入口,具有重要的屏障作用。門神顧名思義就是護宅守門的神仙,每逢過年,上至天子百官下至普通百姓,家家戶戶必在門上張貼門神,以保一家平安。 門神種類主要有宅第大門上將軍武門神、內室門戶上祈福文門神,還有童子門神、仙子門神等,形象豐富多樣,皇家貴戚還往往在畫上瀝粉貼金,十分吉祥喜慶。
組裝電腦DIY 前言:提供基礎的電腦零件組裝教學,對於個人電 腦零件有基本的認識、並有組裝零件使電腦能運 行的能力、能親手 升級自己想要的零件、及基 本的簡易判斷無法開機的原因;最後並提供實做,親手DIY將電腦組裝起來並安裝作業系統。 對象:對電腦組裝沒概念或一知半解者;想要能自己解決電腦無法開機,或是能自己升級想要的專屬電腦配備;可以當家庭的電腦醫生不想電腦一碰到問題就叫修花錢者;自己是電腦軟體方面的工作者,想要增加自己的競爭實力.
直流电机调速监督控制系统 主讲:杨林 Page  1.
第2章 主机 李渊林 本章要点   CPU 主板 2.3   内存 2.4 机箱和电源.
计算机导论 第4讲 微型计算机硬件系统 1.
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
嵌入式操作系统 陈天洲、陈文智.
第七章 异常控制流 CPU控制流的概念 进程上下文切换 异常和中断的基本概念 异常和中断的响应和处理
UClinux在3000平台上的移植.
嵌入式系统应用 概述 随着现代物流业仓储、超市等行业的快速发展,物品流动的速度越来越快,仓储库存周期也越来越短。这样物流仓储盘点行业的压力也越来越大,传统的人工盘点方式已经不能适应现代物流的发展。为了解决这一问题,国际上一些物流先进国家已经采用专业的盘点设备——盘点机,用于物流盘点。 我们选取了一个十分典型的国产盘点机进行介绍。其微处理器选型是采用韩国三星公司生产的S3C2410微处理器,操作系统采用了Windows.
C8051F MCU V1.0.
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
任务1: 点亮你的LED----初识单片机.
第四章 BootLoader开发 附-s3c2410/s3c2440处理器介绍
4.1内存在系统中的使用 4.2内存的分类 4.3内存的技术指标 4.4内存条的种类 4.5内存技术展望 4.6内存的选购
主讲教师:唐大仕 第5讲 计算机硬件 主讲教师:唐大仕
第一章 嵌入式系统开发基础 本章介绍了嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基本内容,使读者系统地建立起的嵌入式系统整体概念。
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
高级语言程序设计 主讲人:陈玉华.
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
基本硬體介紹 1.主機板 2.CPU(運算中心) 3.記憶體(RAM-短暫記憶資料處) 4. 硬碟(HDD儲存資料處) 5.顯示卡(接螢幕)
S3c2410电路设计(以北京博创s3c2410-s实验箱为例讲解)
C H A P T E R 10 存储器层次.
網 址: PC320考勤系統簡報 簡報設計 富宏資訊有限公司 聯絡電話: 網  址:
Bootloader技术分析.
YM100开发实验板 演讲人:熊小燕 2009年月12月16日
2018/11/ /11/23 TRAINING-LZW.
第14章 Bootloader基本概念與燒錄.
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
Block diagram BB —逻辑 —音频 —电源管理 HW interface. Block diagram BB —逻辑 —音频 —电源管理 HW interface.
怎样从0开始写bootloader? 李明 北京亚嵌教育研究中心
模块五: 数控系统参数的备份与恢复 本章学习内容.
在專用的嵌入式板子運行 GNU/Linux 系統已經變得越來越流行。一個嵌入式 Linux 系統從軟體的角度看通常可以分為四個層次:
電腦的硬體架構.
2018年12月29日 单片机原理与应用 单片机概述.
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
第2章 ARM微处理器硬件结构 计算机体系结构分类 ARM版本及系列 ARM处理器结构 存储系统机制.
(第2版).
实验一、进程控制 一、实验目的 1、加深对进程的理解,进一步认识并发执行的实质; 2、分析进程争用资源现象,学习解决进程互斥的方法;
組員名單 組長:陳翰佑 組員:葉昕諭 周建勳 林宏澤 王瑞宏
第2章 计算机基本硬件介绍及选购 2.1 主板 2.2 中央处理器CPU 2.3 内存.
(第2版).
作業系統 第三章 作業系統結構.
8051單晶片 蘇恆生 老師.
第2章ARM/THUMB微处理器结构及指令系统
ARM Developer Suite 介 绍.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/18.
微机原理与接口技术 ——第三章 80x86微处理器 西安邮电大学 计算机学院 范琳.
微机原理与接口技术 课程性质:专业技术必修课程 课程的特点:偏重硬件,软硬件结合 先修课程:导论、数字逻辑、组成原理、汇编语言等
第二章ADS1.2开发环境创建与简介.
Computer Science & Information Management
实验二:添加Linux系统调用及熟悉常见系统调用
第十二章 位运算.
广州市技工院校学生资助管理系统 班主任申报操作指引
第6章 嵌入式软件开发基础.
Linux文件系统.
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
嵌入式IPv4/IPv6校园网机房远程监控系统
Presentation transcript:

Linux Debugging ls,ps,top,etc. printk() /proc i386提供的调试机制(断点,信号,单步执行) ptrace()系统调用 利用/proc/kcore SGI公司OSS项目的kgdb 嵌入式系统 Linux Debug

printk() 在用户态,一般用printf()在可能出问题的地方打印出系统运行状态。在内核态,对应的函数是printk() 由函数printk()打印出来的信息都被系统守护神进程syslogd记录,存放在/var/log/messages 如果记录级别小于当前系统中定义的console_loglevel值(include/linux/kernel.h: 29-36),那么应该将信息打印在当前控制台上 报错,printk("proc_read_super: get root inode failed\n"); 系统状态,printk(“jiffies-> %ld.\n”, jiffies); Linux Debug

用/proc在用户态查看Linux内核状况 系统综合信息 procinfo 进程信息 /proc/self/status 内存信息/proc/meminfo /proc/sys更改系统配置,i.e. /proc/sys/fs/file-max /proc下文件、目录的意义,“proc下的文件.doc” /proc/sys下文件、目录的意义, “proc_sys下的文件.doc” Linux Debug

/proc/<pid>/下文件、目录的意义 文件/目录名 描述 Cmdline 该进程的命令行参数 Cwd 进程运行的当前路径的符号链接 Environ 该进程运行的环境变量 Exe 该进程相关的程序的符号链接 Fd 包含该进程使用的文件描述符 Maps 可执行文件或库文件的内存映像 Mem 该进程使用的内存 Root 该进程所有者的家(home)目录 Stat 进程状态 Statm 进程的内存状态 Status 用易读的方式表示的进程状态 Linux Debug

断点 断点的分类(指令断点和数据断点) 指令断点:运行到这条指令的时候中止程序运行 数据写:数据对这个线性地址写的时候中止程序运行 数据读或者写:指令没有执行,只要发生该地址的数据读或者写就中止程序的运行 int3自陷指令设置指令断点 调试寄存器DR0 – DR3设置指令断点和数据断点 Linux Debug

调试寄存器 DR0 – DR3:保存断点相关的线性地址,包括指令断点和数据断点。使用线性地址 DR4、DR5由Intel公司保留 只有在特权级为0的时候才能访问这些寄存器 Linux Debug

Linux调试处理 int 3单字节异常指令,系统进入异常处理状态。用do_int3()函数响应 int 2触发系统的debug调试异常,用do_debug()函数响应 task_struct{}的thread_struct{}有成员变量 unsigned long debugreg[8] Linux Debug

Signal 举例说,进程出现浮点运算错误时,进程会接收到SIGFPE信号,在正常运行的状况下,会产生core dump,从而导致程序非正常退出; 在调试的情况下,调试器接收到SIGFPE信号,就可以在产生错误的代码处,检查当时浮点操作数的值是否正常 对于PTRACED进程(PF_PTRACED置位),被调试进程在收到任何信号的时候(SIGKILL除外),都会中止进程的运行,并且通知调试器进程(父进程);收到SIGKILL信号就导致被调试子进程的直接退出 Linux Debug

单步中断处理程序在do_debug()的函数过程中 单步运行 标志寄存器EFLAGS中的TF标志 当调用ptrace()的PTRACE_SINGLESTEP功能,ptrace()会将TF置位,并且让进程继续运行。当进程回到用户态并且执行了一条指令之后,CPU产生异常,被中断的指令把线性标志寄存器推入堆栈,然后再清除TF位,使单步中断处理程序可以正常的运行。 单步中断处理程序在do_debug()的函数过程中 Linux Debug

通过使用Linux提供的ptrace()系统调用,可以让父进程监控子进程。 使用ptrace()系统调用,可以用来改变调试寄存器的内容,包括添加断点地址,改变断点控制寄存器的值。也可以改变子进程中ptrace成员的值,这是在进程运行过程中判断调试状态情况的最重要的成员 Linux Debug

ptrace请求类型 “ptrace请求类型宏定义.doc” Linux Debug

用户空间的ptrace()调用方法 #include <sys/ptrace.h> long int ptrace(enum __ptrace_request request, pid_t pid, void * addr, void *data) request: ptrace的请求类型 pid: 作用的对象 addr和data:传入的地址和数据 对不同的请求类型来说,addr和data所代表的意义不尽相同。“ptrace调用方式.doc” Linux Debug

ptrace()调用机制/流程 “ptrace调用简单流程.doc” Linux Debug

/proc/kcore /proc/kcore文件是系统内核运行情况的内存映像 如果编译内核的时候增加-g选项,即会在生成的二进制代码vmlinuz或vmlinux中,添加调试相关的数据。 以root身份运行 #gdb /usr/src/linux/vmlinux /proc/kcore 因为core-file命令是静态的,如果需要查看内核最近的运行情况,需要再次运行core-file将新的/proc/kcore导入,否则就只能是上次使用core-file的情况 Linux Debug

一次示例 # gdb vmlinux (gdb) core-file /proc/kcore #0 0x0 in ?? () (gdb) p jiffies $1 = 29119787 $2 = 29119787 $3 = 29122291 (gdb) Linux Debug

SGI公司OSS项目的kgdb Linux Debug

嵌入式系统的组成 微处理器(MCU、DSP、SOC) 存储器(内存、Flash) 人机交互界面 网络接口 其它输入和输出装置 软件系统 有限的功能 实时性、系统可靠性方面的考虑 Linux Debug

ARM公司的ARM Evaluator-7T Lineo的µCSimm 嵌入式系统开发平台 ARM公司的ARM Evaluator-7T Lineo的µCSimm Linux Debug

µCSimm Linux Debug

µCSimm l 16MHz,2.7 MIPS EC000 CPU Core l 8MB DRAM l 2MB Flash ROM l         30针SIMM form factor l         3.3V电压下最大电流为100mA l         low power sleep mode l         板载µClinux操作系统 l         RS232串口 l         SPI serial master l         最高为QVGA的LCD控制器 l         Up to 19 parallel I/O l         10BaseT 以太网 Linux Debug

µCsimm调试环境 µClinux操作系统 一张µClinux System Builder Kit光盘 linux.bin文件是编译后的µClinux内核,将传输到µCsimm上运行 µCsimm上有Bootloader装入linux.bin 主机通过RS232与µCsimm相连。主机使用串口的终端工具minicom与串口通信 Linux Debug

ARM Evaluator-7T ARM7TDMI处理器,包括了THUMB®指令集。 Samsung KS32C50100 微控制器 工作频率可以高达50MHz 512KB FLASH 512KB+ 32位 SRAM Flash中的 Bootstrap Loader Angel debug monitor MicroHAL 完全MultiICE兼容的JTAG 接口,包括reset和hot-swap功能 软件开发工具ARM Developer Suite(ADS) Linux Debug

嵌入式系统软件开发过程 建立交叉开发环境 交叉编译和连接 重定位和下载 调试 Linux Debug

调试示意图 Linux Debug