我正在调试内存损坏问题,我想检查SF是否正在访问无效内存,但我不知道如何使用命令行启动SF。请帮忙。
答案 0 :(得分:0)
SurfaceFlinger很早就由系统启动,并且通常不会由用户从命令行启动。
一种方法是将valgrind命令插入initd控制脚本,修改init.rc。由于rootdir的安装方式,这比听起来更难。
将surfaceflinger
二进制文件替换为启动在valgrind下运行的SurfaceFlinger的二进制文件应该可以正常工作;只要确保你wait()
完成它或者启动就会认为它会在启动器退出时死亡。
当然,判断SurfaceFlinger是否正在访问无效内存的最佳方法是查看它是否崩溃,尽管您的定义可能是"无效"超出"未映射或映射不兼容"。
你会从各种ioctl()
的valgrind中得到一些抱怨,尤其是涉及硬件编辑器的地方。