首页
学习
活动
专区
圈层
工具
发布

x86_64 架构下 linux 内核中断调试笔记

x86_64 中断硬件处理过程在 x86_64 架构中 cpu 寄存器里面包含一个中断描述符寄存器 (idtr) 寄存器,该寄存器指向内存中存放的中断描述符表(元素为中断描述符的数组,元素个数为256)...中断描述符表(idt_table) 元素查看通过 qemu 启动 linux 内核,通过 gdb 连接 qemu 并运行内核,待内核启动完成后首先可以输入p &idt_table 查看中断描述符表在内存中的位置...regs)$5 = 168(gdb) p /x sizeof(*regs)$6 = 0xa8由此可以看出 regs变量是一个struct pt_regs结构体指针,而 struct pt_regs 就是 linux...,总结一下 regs 指向的 struct pt_regs 结构体 由硬件自动入栈和软件指令压入栈两步来构建。...(gdb) p /x regs->ip$11 = 0xffffffff8215d04f通过 p /x regs->sp 打印出中断发生前,栈顶指针的位置为 0xffffffff82a03e80 ,和本文之前查看

45000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux平台x86_64|aarch64架构RTSP|RTMP直播播放器开发实践

    ​Linux SmartPlayerSDK背景Linux(含x86_64架构和aarch64架构)的RTSP|RTMP直播播放SDK,是大牛直播SDK发布的一款用于Linux平台的视频播放器开发库,支持多种视频流协议...,旨在提供低延时的流媒体播放和高质量的渲染。...通常,你需要安装X11开发库(用于窗口管理和视频渲染),并确保你的Linux环境配置支持编译C++代码。...集成流程概述在Linux平台上使用大牛直播SDK的RTSP|RTMP直播播放SDK模块,通常包括以下几个步骤: SDK初始化 创建和配置播放器窗口 设置参数、回调函数处理视频帧和事件 开始|停止播放流媒体...总结集成大牛直播SDK的RTSP|RTMP播放模块到Linux应用程序中,关键步骤包括初始化SDK、创建并配置播放窗口、注册回调函数处理视频帧和事件、以及启动播放流媒体。

    42110

    CentOS5.8 x86_64系统手动释放内存

    线上集群后端某台Web服务器例行检查时,我观察到+buffers/cache值(即Linux内存的实际使用情况)一直都是5365左右,就算停掉Nginx+FastCGI程序和其它程序也是一样,考虑到这台机器经常在使用...而Linux系统有一个特性:在Linux下频繁存取文件时,就会占用物理内存。当程序结束时并不会自动释放被占用的内存,而是一直作为Cache存在。...实际上内核结束一个程序后,它是会释放内存的,但是内核并没有立刻将这部分收集到free当中,而是存在在cached或者buffer当中,提高系统的io效率,cache和buffered的内存是由内核进行动态的配置管理...操作步骤: 1、查询当前内存使用情况和释放缓存的参数 free -m 命令结果如示所示: total      used      free    shared    buffers    cached...CentOS 5.6 Linux安装系统后的基本优化 http://www.linuxidc.com/Linux/2012-02/54504.htm

    76220

    【Linux】linux工具和命令

    一、Linux常用命令: ls 显示当前目录下的文件 ls-a 显示当前目录下所有文件(包括隐藏文件) ls -l 显示文件和目录的详细资料 (属性,日期,时间,大小等) ls -al...显示所有文件和目录的详细资料 cd.....安装软件: 1.源代码安装 2.rpm安装 --Linux安装包 3.yum安装 --解决安装源,安装版本,安装依赖 4.什么是软件包在Linux下安装软件, 一个通常的办法是下载到程序的源代码...软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系. yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种包管理器....“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配. “el7” 表示操作系统发行版的版本.

    95520

    x86_64运行时动态替换函数的hotpatch机制

    昨天我发了一篇关于替换运行中的内核函数的文章: Linux内核如何替换内核函数并调用原始函数 :https://blog.csdn.net/dog250/article/details/84201114...当然了,关于 “e8 00 00 00 00 callq …” 这个有很多话可以讲,比如和Link相联系的时候就比较有意思了,它可是作为一个桩指令存在。这个和HOOK无关,也不再说太多。.../hotpatch的实质其实就是在函数的开头和结尾填充了一些无关紧要的指令,方便HOOK来用自己的jmp指令覆盖这个无关紧要的指令。比如下面是一个函数的开头: ?...再一个需要注意的是,由于指令buffer是在堆上分配的,在64位系统上,它的位置和函数代码的位置之差会超过4个字节界定的相对偏移,所以就不能用0xe9+4字节相对偏移来jmp了,而要通过64位绝对地址来跳转了...这样可以达到和kprobe相同的效果。当然,这需要对运行中的二进制指令序列做相对周密详细的分析。

    1.3K10

    linux基础-linux和unix的区别

    有时候我们对天天使用的Linux指令,只知道怎么用,却分不清概念用法区别,我觉得很有必要整理整理大家熟视无睹的一些linux概念区别。...首先说说unix和linux的区别: linux和unix的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。...Linux主要有RedHat Linux 、CentOS Linux、Fedora Linux、Debian Linux、Ubuntu Linux、SuSe Linux等。...我在大学时用的是Ubuntu和Redhat,当时很喜欢Ubuntu出色的桌面,后来在互联网公司工作,发现基本装的都是Centos 6.5。...http://www.zhihu.com/question/22814858 [知乎]互联网公司选择 Debian、Ubuntu 和 CentOS 哪一个发行版运维成本最低?

    5.6K10
    领券