本地调试Travis-CI错误

有时会遇到本地无法重现Travis-CI中所报的错误的情况,这时可以通过本地运行Travis-CI的docker image来进行调试。其步骤在Travis-CI的文档中做了详细的介绍。Travis-CI在Docker Hub上有一系列的环境,可以根据项目按需使用。在进入Docker环境后,按照Travis-CI报错的日志一步步执行即可复现日志中的内容。
复现错误之后的下一步就是debug。如果只是按照官方文档部署docker,一些debug工具会罢工,如GDB会报Error disabling address space randomization: Operation not permitted。这是因为Docker环境默认会禁用许多系统调用(见Seccomp security profiles for Docker),这些禁用一般不会影响正常的应用程序,但是对debug工具来说无疑是釜底抽薪。参考stackoverflow,为docker加入--cap-add=SYS_PTRACE --security-opt seccomp=unconfined的运行参数即可使debug工具恢复正常工作。