mesa调试技巧

技术关键字:mesa、log系统、环境变量

目录

前言

一、gdb或vscode的断点调试

二、mesa log 系统的使用

总结


前言

       软件调试技术是要求软件开发人员必备的一项技能。不同的问题具有不同的调试手段和方法。本文从mesa库的实现特点入手,介绍两种基本的调试手段:断点调试和mesa log系统的调试。


一、gdb或vscode的断点调试

        断点调试通常用来理解程序的执行流程。该方法可以让你快速的理解从一个已知函数为起点,到目标函数的调用栈。但mesa从C语言实现了面向对象的设计,因此使用了大量的函数指针,这对调试断点调试带来了一定的复杂度,又因为mesa支持不同厂家驱动,有时你不知道函数指针被赋值为哪个具体实现。这时,前文的mesa调用主线分析与理解就起到了作用,可以在对应层上加上断点,达到快速定位的作用。

二、mesa log 系统的使用

        mesa的很多模块都有自己的log体系,每个体系里都有log等级。在调试时,通常设置debug等级,即可打印较多的信息供理解分析程序执行逻辑。这些log等级通常又是有环境变量控制,这种控制方式让你仅通过配置而不需要修改代码。下图是mesa前端模块的log系统相关的配置方法,至于gallium架构中的GPU-specific的驱动部分,各家有各家的实现,但方法一般都是:通过自有环境变量控制log等级和开关某些功能features的支持。

        这里并没有给出glsl编译模块的log控制,留给大家自己去尝试了。

 mesa 公共层的log等级设置

总结

        通过本文和前面三篇文章的介绍,相信你当前对mesa有了一个大概的认识,你应该可以入手mesa,进行mesa的简单调试了。后续将对mesa的众多具体技术细节进行分析,包括mesa的dri相关的初始化、EGL初始化、mesa使用可编程管线实现固定管线、mesa对glsl的编译过程、mesa与xserver的送显交互、double\tripple buffer的实现、OpenGL具体features的实现等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值