用于GNU make的Backtrace
有没有办法让GNU make打印导致命令在失败时执行的目标的“回溯”? 我经常处理严重混淆的makefile,同时解决在新系统上构建软件的可移植性问题,看起来这应该是一个非常简单的事情,make会大大有助于调试,但我找不到任何方式来请求它。 我想看到的是:
gcc: error: ... make[2]: error: gcc ... make[2]: error building target bar make[2]: error building dependency bar for target foo make[1]: error: make -C subdir make[1]: error building target subdir make[1]: error building dependency subdir for target all ...
显示失败命令最终执行的整个依赖路径。
有没有办法做到这一点?
使用翻拍 。 它是GNU Make的修补版本,它增加了改进的错误报告,以易于理解的方式跟踪执行的能力以及调试器。
make -p
和make -d
提供了有趣的信息,但并不是你想要的。 请参阅make的手册页 。
是的, 翻拍可以给你一个回溯。 这是使用翻拍的Makefile显示的一个运行:
翻拍--debugger Makefile GNU Make 4.1 + dbg0.91 专为x86_64-unknown-linux-gnu而构建 版权所有(C)1988-2014 Free Software Foundation,Inc。 版权所有(C)2015 Rocky Bernstein。 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改并重新分发它。 在法律允许的范围内,不提供任何担保。 阅读makefile ... 更新makefile .... - >(/ src / github / remake / Makefile:608) Makefile:Makefile.in config.status 翻拍<0> bt =>#0 Makefile at / src / github / remake / Makefile:608 翻拍<1> - >(/ src / github / remake / Makefile:594) Makefile.in: 翻拍<2> bt =>#0 Makefile.in at / src / github / remake / Makefile:594 #1 makefile在/ src / github / remake / Makefile:608 重拍<3> - >(/ src / github / remake / Makefile:618) config.status:configure 翻拍<4> bt =>#0 config.status at / src / github / remake / Makefile:618 #1 makefile在/ src / github / remake / Makefile:608 翻拍<5> - >(/ src / github / remake / Makefile:621) 配置: 翻拍<6> bt = <#0在/ src / github / remake / Makefile配置:621 #1 config.status at / src / github / remake / Makefile:618 #2 Makefile在/ src / github / remake / Makefile:608 重拍<7>
您还可以在特定目标( break
)设置断点,去那里( continue
)并backtrace
它。 如果出现错误,您将获得坠毁时您所处的位置的回溯。