Linux 第三周 学习笔记和实验

姬梦馨

原创博客

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

 

常用调试参数
r(run) 开始运行程序 
c(continue) 继续运行一直到断点停止 
b(break) 设置程序断点 
l(list) 显示当前行后面的源程序 
bt (backtrace) 查看堆栈信息 
info 查看各类gdb信息以及环境信息,比如:info break可以查看断点信息 
p(print) 打印出变量值;如 p var,会把var变量的值输出 
s(step) 单步跟踪,会进入函数内部 
n(next) 单步跟踪,不进入函数 
finish 跳出函数调试,并打印返回时的信息 
clear 清除全部已定义的断点 
q(quit) 退出gdb 

 

一: 启动Linux 内核

  1. cd LinuxKernel/
  2. qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

 

内核启动完成后进入menu程序,输入help查看三个命令help、version和quit

 

 

 

  • 使用gdb跟踪调试内核 

  1. qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
  2. # -S freeze CPU at startup (use ’c’ to start execution)
  3. # -s shorthand for -gdb tcp::1234 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项

 

 

 

另开一个shell窗口

  1. gdb
  2. (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
  3. (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
  4. (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后

 

 

 

实验总结;

1:start_kernel 相当于普通C程序的main()。

     mm/ 内存管理代码。

     kernel/ 与进程调度有关;Linux内核的核心代码在该目录中。

2.全局变量init_task

其中有一个全局变量init_task,即手工创建的PCB,0号进程即最终的idle进程。

3.trap_init

trap_init涉及到中断,初始化一些中断向量

set_intr_gate:设置中断门
set_system_trap_gate:系统陷阱门SYSCALL VECTOR。

4. mm_init   mm_init:内存管理模块初始化

   sched_init  sched_init:调用进程调度初始化

   rest_init :kernel_init:创建1号进程 第一个用户态进程:init_process,1号进程,找默认路径下的程序作为1号进程 kthreadd:内核线程,用来管理系统资源

   当系统没有进程需要执行时就调度idle进程,即0号进程,一直存在。

5、qemu相当于打开一个虚拟机。

6.百度的一些GDB 源码查看

  • list <linenum> -- 显示程序第 linenum 行的周围的源程序.
  • list <function> -- 显示函数名为 function 的函数的源程序.
  • list <filename:linenum> -- 哪个文件的哪一行.
  • list <filename:function> -- 哪个文件中的哪个函数.
  • list <offset> -- 当前行号的正/负 offset 偏移量那那行.
  • list -- 显示当前行后面的源程序.
  • list - -- 显示当前行前面的源程序.
  • list <first>, <last> -- 显示从 first 行到 last 行之间的源代码.若无 first 则显示从当前行到 last 之间的源代码.
  • set listsize <count> -- 设置一次显示源代码的行数.
  • show listsize -- 查看当前listsize的设置.

 

posted @ 2016-03-13 20:42  偷影子的人  阅读(359)  评论(1编辑  收藏  举报