首页
社区
课程
招聘
[原创]使用GDK7调试Linux内核之观察i915
发表于: 2021-7-13 17:18 5650

[原创]使用GDK7调试Linux内核之观察i915

2021-7-13 17:18
5650

i915可以分成两类;一类是内核态空间下的i915,另一类是用户态空间下的i915。

内核态空间下的i915是英特尔显卡的内核驱动程序。用户态空间下的i915是基于英特尔显卡的mesa实现的。

mesa是基于开源的OpenGL实现的。

DRM的全称是Direct Rendering Manager,它是Linux内核中的子系统;DRM用于将用户态空间下的进程与GPU进行连接。

l  用户态空间下的进程通过DRM给出API与GPU进行通信,用户态下的进程可以通过该API发送命令及数据给GPU、命令GPU做3D渲染的硬件加速及GPU计算等工作。

l  DRM首先是作为X server内核态空间中的组件,但也可以被其他图形堆栈使用。

参见文章16aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8X3u0A6M7X3c8J5K9h3&6Y4i4K6g2X3x3s2S2^5x3q4)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3x3e0p5^5y4U0M7#2x3U0t1^5

参考文章5c8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8X3u0A6M7X3c8J5K9h3&6Y4i4K6g2X3x3s2S2^5x3q4)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3x3e0p5^5y4U0M7@1y4U0V1^5

参考文章fc5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8X3u0A6M7X3c8J5K9h3&6Y4i4K6g2X3x3s2S2^5x3q4)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3x3e0p5^5y4U0M7#2y4K6x3I4

需要加载的内核模块符号文件:i915.ko。

1.      在命令行内输入lm l,确认需要的符号文件已经加载,如图3.1所示。

图3.1 确认需要的符号文件已经加载

2.      在命令行内输入x i915!*flush_render,查看函数flush_render的信息,如图3.2所示。

图3.2 查看函数flush_render的信息

3.      在命令行内输入bp ffffffff`c07b16b0,给函数flush_render设置断点,如图3.3所示。

图3.3 给函数flush_render设置断点

4.      恢复GDK7,等待断点命中,断点命中后会自动打开函数所在文件,如图3.4所示。

图3.4 命中断点ffffffff`c07b16b0

5.      在命令行内输入lm l,查看已经加载的模块,如图3.5所示。

图3.5 查看已经加载的模块


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-7-13 17:22 被birdring编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回