SpyGlass 图形界面起不来:GUI 启动失败速查
更新时间:2026-10-23。FAQ 速查页,属于 EDA 工具排错系列。在服务器上敲
spyglass或sg_shell -gui想开个图形界面看 lint 报告,迎面一句cannot open display,或者窗口闪一下就退——SpyGlass 的 GUI 走 X11 协议把画面从 Linux 计算节点送回本地屏幕,这条链路上任何一环断了(转发没开、DISPLAY 为空、X 服务器没起、权限被拦)界面都起不来。同型问题在其他工具上的对照见 Innovus GUI 启动失败;连工具命令都找不到的更基础问题先见 SpyGlass 工具不在 PATH。
本文要回答的问题
- cannot open display 是链路断在哪一环?
- ssh 登录没加 -X/-Y,进去之后再补救还来得及吗?
- GUI 白屏、方块字、起来就闪退,算哪一类问题?
- 无图形栈的容器或服务器上,怎么让 GUI 模式跑得起来?
一、报错原文与现象
Error: cannot open display "localhost:10.0"
qt.qpa.plugin: could not load the Qt platform plugin "xcb" in "" even though it was found.
Authorization required, but no authorization protocol specified
# 或:窗口起来但白屏、中文全变方块、一点就崩先分四种形态:打不开(cannot open display)——X 链路根本没通;插件加载失败(xcb plugin could not be loaded)——链路通了但工具侧运行时缺库;权限被拒(Authorization required)——X 服务器在,但 xhost/MIT-MAGIC-COOKIE 把你拦在门外;起来但不可用(白屏、方块字)——渲染与字体资源问题。四种形态四条通道,先归类再动手。
二、可能原因总览
| 报错现象 | 可能原因 | 处置 |
|---|---|---|
| cannot open display,DISPLAY 为空 | ssh 没带 -X/-Y,转发没开 | ssh -Y 重连,勿手动瞎填 DISPLAY |
| cannot open display,DISPLAY 有值 | VNC/远程桌面里编号与实际不符 | 对照 xclock 测试,修 DISPLAY 编号 |
| xcb plugin could not be loaded | Qt 运行时与系统库版本不匹配 | 用工具自带 Qt 库,清 LD_LIBRARY_PATH 污染 |
| Authorization required | xhost 限制或 cookie 丢失 | xhost 放行或重登录刷新 cookie |
| batch 模式能跑、GUI 起不来 | license 的 GUI 特性没买或被占完 | 查 feature 清单,错峰或改批处理 |
| 白屏/卡死 | OpenGL 硬件渲染与远程 X 不兼容 | 切软件渲染变量 |
| 中文界面方块字 | 服务器缺中文字体 | 装字体包或界面切英文 |
| 容器/无头机无任何显示 | 根本没图形栈 | xvfb-run 起虚拟显示兜底 |
三、逐条排查展开
先顺着 X11 链路走一遍再碰工具参数。 SpyGlass GUI 的画面链路是:SpyGlass(X 客户端,跑在服务器)→ SSH 隧道 → 本地 X 服务器(macOS 上的 XQuartz、Windows 上的 VcXsrv/Xming)。排查顺序:本地 X 服务器起了吗(XQuartz 要在设置里勾选允许网络连接);SSH 带 -X 或 -Y 了吗;登录后 echo $DISPLAY 有值吗(正常形如 localhost:10.0);xclock 能弹窗吗。xclock 弹不出,全是链路问题,别在 SpyGlass 参数上浪费时间;xclock 能弹、SpyGlass 不能弹,才进工具侧。
DISPLAY 为空绝大多数是 ssh 忘加转发选项。 很多人习惯性 ssh server 裸连,进去发现 DISPLAY 是空的,然后手动 export DISPLAY=笔记本地址:0.0——这在多数网络环境下不通(X 服务器默认不监听 TCP 直连,且跨网段被防火墙拦),还把排查方向带偏。正确做法:退出来用 ssh -Y user@server 重连(-Y 是信任模式,比 -X 少一层安全扩展限制,EDA 工具兼容性更好),让 sshd 自动把 DISPLAY 设成 localhost:10.0 这类本地转发端口。已经在会话里不想退出的,补救成本通常高于重连,直接重连最省时间。
xcb 插件加载失败是 Qt 运行时的问题。 报错里带 Qt/xcb 字样、DISPLAY 明明有值却起不来,典型根因是 LD_LIBRARY_PATH 里混入了别的工具的旧 Qt 库,或者系统 libxcb 太老。处置:先 ldd 查 SpyGlass 自带 Qt 库的依赖缺口,把环境里的 LD_LIBRARY_PATH 临时清空再启动验证;多工具共存的环境里,给 SpyGlass 写个干净启动脚本(脚本内只设它自己需要的变量)比全局环境叠罗汉稳得多。
Authorization required 是 X 权限在拦你。 常见于两种场景:su/sudo 切了用户,cookie 没跟过来;VNC 会话过期后 DISPLAY 编号还指着旧会话。切用户场景把原用户的 cookie 带过去或干脆用原用户重连;VNC 场景 xclock 一测便知——连 xclock 都报同样的错,就是 DISPLAY 编号与实际显示不符,确认当前 VNC 真实编号再改。
license 的 GUI 特性是容易被忽略的商业根因。 SpyGlass 的批处理与 GUI 模式在某些 license 配置下占不同 feature:batch 跑得好好的,一加 -gui 就报 feature 不可用或排队等不到。对照 license 日志里 checkout 失败的 feature 名确认,license 侧的系统排查见 SpyGlass license checkout 失败。确认是额度问题的,错峰使用或把这次操作改批处理(GUI 看报告的场景,多数可以先 batch 出结果再离线看)。
无图形栈环境用 xvfb-run 兜底。 容器、云主机裸镜像里连 X 客户端库都没有,装全套桌面环境不现实。xvfb(虚拟帧缓冲)在内存里起一块假屏幕,工具照常用 GUI 模式渲染,只是画面不送给任何人看——配合截图导出命令,能在 CI 里自动出报告截图:xvfb-run -a spyglass -gui ...。注意这只解决「能跑」,交互操作还是要走真 X 转发或 VNC。
白屏卡死与方块字是收尾类问题。 窗口起来但内容白屏:Qt 硬件渲染与远程 X 不兼容,启动前设软件渲染相关环境变量(QT_X11_NO_MITSHM 等)规避。中文变方块:服务器缺中文字体,装字体包或界面语言切英文(EDA 工具英文界面最稳定)。两条都不影响功能,优先级放低,但别误判成「工具坏了要重装」。GUI 卡死挂起类的深入排查见 SpyGlass 运行卡死无响应。
颜色按语义分角色:红是报错入口与各类症状,蓝是排查动作,绿是「X 链路正常、转工具侧」的分流,橙是修复手段,紫是防复发收口。主线与 Innovus 篇一致——先用 xclock 把链路与工具切开:xclock 弹不出修转发、DISPLAY 与权限;xclock 正常再查 Qt 插件、license 特性与渲染设置;无图形栈的特殊环境走 xvfb-run 兜底,最后全部汇到防复发纪律。
四、预防与纪律
- 新环境四步自检:本地 X 服务器启动 → ssh -Y 登录 → echo DISPLAY → xclock,写进开新机器/新员工流程。
- SSH 配置固化:个人
~/.ssh/config里给常用服务器配ForwardX11 yes+ForwardX11Trusted yes,杜绝忘加 -Y。 - 启动脚本隔离环境:给 SpyGlass 包一层启动脚本,脚本内设干净的 LD_LIBRARY_PATH,避免多工具 Qt 库互相污染。
- 远程长时操作用 VNC:裸 X 转发扛不住网络抖动,floorplan 式长会话操作一律走 VNC/x2go。
- 报告批处理化:lint/CDC 报告用 batch 模式出结果文件,GUI 只留必须人眼交互的场景。
这一篇在知识体系里的位置
本篇是 EDA 排错速查簇中 SpyGlass「运行环境」节点的 FAQ 页。同簇对照:DC 侧见 Design Compiler GUI 启动失败,后端侧见 Innovus GUI 启动失败;license 侧深入排查见 SpyGlass license checkout 失败;运行中卡死挂起见 SpyGlass 运行卡死无响应。
一句话总结
SpyGlass 图形界面起不来先用 xclock 把 X 链路与工具切开:链路侧修 ssh -Y 转发、DISPLAY 编号与 xhost 权限;工具侧查 Qt xcb 插件(清 LD_LIBRARY_PATH 污染)、确认 license 的 GUI 特性与额度、白屏切软件渲染;无图形栈的容器/服务器用 xvfb-run 起虚拟显示兜底;治本是把报告批处理化、SSH 转发配置固化——GUI 只留给真正需要人眼交互的操作。