You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试GitHub Action中Qt6迁移后的Windows测试退出码127错误?

调试Windows平台GitHub Actions中Qt6测试的exit code 127错误

针对Qt5到Qt6迁移后Windows测试报exit code 127的问题,以下是无需登录构建服务器的调试方法:

1. 修复bash环境下的路径转义问题

在bash shell中,反斜杠\是转义字符,直接使用Windows路径会导致解析错误。修改测试执行命令中的路径为正斜杠或双反斜杠:

# 用正斜杠
cd build && "/c/a/projectName/build/Bin/MyTest.exe"
# 或双反斜杠
cd build && "C:\\a\\projectName\\build\\Bin\\MyTest.exe"

同时在运行测试前,先验证文件存在性:

test -f "/c/a/projectName/build/Bin/MyTest.exe" && echo "测试程序存在" || echo "测试程序缺失"

2. 检查环境变量与依赖查找路径

添加步骤打印PATH和Qt相关环境变量,确认Qt6的bin目录是否被正确加入:

echo "当前PATH:"
echo $PATH
echo "Qt安装路径:"
echo $QTDIR

如果Qt6的bin目录不在PATH中,手动添加:

export PATH="$QTDIR/bin:$PATH"

3. 分析测试程序的依赖项

使用dumpbin工具检查测试程序的依赖库,确认是否有缺失的DLL(包括自定义自研库和Qt6模块):

cd /c/a/projectName/build/Bin
dumpbin /dependents MyTest.exe

输出会列出所有依赖的DLL,对比Bin目录下的文件,找出缺失项。

4. 切换到PowerShell执行测试

避免bash shell的路径解析问题,改用PowerShell运行测试,能获得更原生的Windows错误提示:

- name: Run test with PowerShell
  if: matrix.os == 'windows' && steps.prepare-env.outputs.shouldbuild == 1
  shell: pwsh
  run: |
    & "C:\a\projectName\build\Bin\MyTest.exe"

5. 捕获完整的错误输出

将测试程序的标准输出和错误输出重定向到日志文件,查看更详细的错误信息:

cd build && "/c/a/projectName/build/Bin/MyTest.exe" > test_log.txt 2>&1
cat test_log.txt

日志中可能会明确提示哪个DLL加载失败。

6. 验证自定义自研库的部署

确认自定义库是否被正确复制到测试程序的Bin目录,或是否在PATH中。添加步骤列出Bin目录的所有文件:

ls -la /c/a/projectName/build/Bin

检查自定义库的文件名、版本是否与测试程序依赖的一致。

内容的提问来源于stack exchange,提问作者Thestrup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:26:37