linux内核分析第六次实验
2024-09-11 00:23:04
使用gdb跟踪创建新进程的过程
rm menu -rf git clone https://github.com/mengning/menu.git
mv test_fork.c test.c
执行fork,可以看到父进程子进程都输出了信息。
使用gdb进行调试
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
gdb
file linux-3.18.6/vmlinux
target remote:1234
开始设置断点
新进程是从哪里开始执行的?为什么从哪里能顺利执行下去?即执行起点与内核堆栈如何保证一致。
ret_ from_ fork决定了新进程的第一条指令地址。子进程从ret_ from_ fork处开始执行。因为在ret_ from_ fork之前,也就是在copy_ thread()函数中* childregs = * current_ pt_ regs();该句将父进程的regs参数赋值到子进程的内核堆栈。* childregs的类型为pt_ regs,里面存放了SAVE_ ALL中压入栈的参数,因此在之后的RESTORE ALL中能顺利执行下去。
最新文章
- 第二天ci项目规划 数据库设计
- C和指针 第四章 习题
- Laravel项目目录结构说明
- heartbeat安装与配置
- Routine Problem(数学)
- jQuery实现隔行变色
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
- 二叉查找树的查找、插入和删除 - Java实现
- QTimer源码分析(以Windows下实现为例)
- NHibernate遇到的问题集 持续更新。
- [转] 看懂UML类图和时序图
- (转)iOS7界面设计规范(4) - UI基础 - 布局
- 【笔记】shell下的主要工具
- iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
- 利用kibana插件对Elasticsearch查询
- tensorflow学习001——MNIST
- 使用Maven搭建SpringMVC
- 从harbor部署到在k8s中使用
- 【题解】Luogu UVA12345 Dynamic len(set(a[L:R]))
- 【SPL标准库专题(6)】 Datastructures:SplPriorityQueue
热门文章
- January 08th, 2018 Week 02nd Monday
- MySQL视图 索引 存储过程 触发器 函数
- activiti5.14版本在线流程设计器的国际化中文支持
- Django之ORM查询复习与cookie
- gitlab 数据同步
- 转 一个web项目web.xml的配置中<;context-param>;配置作用
- openzeppelin-solidity/contracts的代码学习——payment
- python3打包成exe---pyinstaller方法
- centos7搭建filebeat
- 201904:Action recognition based on 2D skeletons extracted from RGB videos