如何调试SCons脚本

7
我有一个需要调试的SCons脚本。在所有的操作中,我遇到了一个问题,需要找出它是在哪里出了问题。
我想要调试SCons脚本,但我不确定如何设置。我有PyCharm和Komodo IDEs,但我无法弄清楚如何让它们工作。
我尝试过这个:
scons --debug=pdb <args...>

但这只是让我进入了SCons,我需要进入我创建的SCons脚本内部。
有人能向我展示如何设置PyCharm或Komodo来调试SCons脚本吗?如果不可能,我也可以考虑其他调试选项。

可能是如何使用scons在调试模式下获取可执行文件的重复问题。 - Paul Sweatte
1
不是重复问题,参考文章是关于构建调试二进制文件的。这个问题是关于调试SConscripts/SConstructs或其他SCons逻辑的。 - bdbaddog
4个回答

2

在你的SConstruct文件中:

import pdb
pdb.set_trace()

当您尝试调试时,您将会进入SConstruct(或SConscript,如果您要调试的是它)中的调试器。


相关链接:https://dev59.com/EG445IYBdhLWcg3wTInm - Ciro Santilli OurBigBook.com

1
使用PyCharm,您可以进行远程调试。
在PyCharm安装中找到远程调试程序包:
- Python 2.x:pycharm-debug.egg - Python 3.x:pycharm-debug-py3k.egg
使用easy_install安装程序包。它应该能够在您的Python部署中找到。在Windows上,请查看Scripts文件夹。
按照Remote Debugging HowTo进行操作。
以任何您想要的方式运行要调试的Python代码,它会连接到PyCharm的调试服务器并停止在脚本中。
调试Godot的SConstruct文件的屏幕截图: enter image description here 为了接收构建所需的正确环境变量(不是来自PyCharm),在Visual Studio命令行中执行了Scons。

更新: 更简单的解决方案是直接为scons.py添加一个运行配置。您可以在Visual Studio命令提示符中发出SET命令,复制打印的所有环境变量并粘贴到PyCharm内的运行配置的环境设置中。通过该配置,您可以调试整个基于scons的构建,包括您的SConstruct文件。


1
如果您使用VS Code,您可以像调试普通的Python脚本一样调试SCons脚本,只需在.vscode/launch.json中创建一个配置即可:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: SCons",
            "type": "python",
            "request": "launch",
            "program": "c:/apps/python38/lib/site-packages/SCons/__main__.py",
            "args": [],
            "console": "integratedTerminal",
            "justMyCode": false
        }
    ]
}

program 应该设置为您安装 SCons 的路径。您可以通过 scons --version 获取它。不要忘记将 __main__.py 添加为入口脚本。建议将 justMyCode 设置为 false,这样您就可以在 Scons 的源代码处设置断点。

如果需要,您可以在 args 中设置参数:

            "args": [
                "--tree=prune",
                "--debug=explain",
                "hello.elf"
            ],

VSCode 带来了调试功能,例如检查变量、设置断点和其他 GUI 活动。有关详细信息,请转到 VS Code 中的 Python 调试


0

根据我的经验,在SCons中使用逐步调试是非常困难的。

我的建议是在您的SConstruct文件中添加一个良好的日志记录系统(或添加一个)。 例如,详细级别调试将记录自定义构建器函数中的变量,调试级别仅记录最关键的变量,生产级别(默认)仅在出现警告或错误时记录,以最大程度地减少对性能的影响。

个人认为,在复杂的系统中依赖于日志记录系统进行调试是一种常见做法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接