From 2beb5d724f3af3bb39bc6c97c5317ece9911a240 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 19 Oct 2026 18:31:45 +0800 Subject: [PATCH] =?UTF-8?q?debug(traceback):=20worker=20stderr=20=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E5=B9=B6=E6=8C=89=20fail-fast=20=E6=B3=A8=E5=85=A5=20?= =?UTF-8?q?main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 并行 worker 的 _vlog 不汇总;改为 stderr 直接输出 enabled/InstallSymbol;main 找不到 Install 时明确报错。 --- lib/Projectrans/Phase2Translator.py | 9 ++++++--- lib/core/Handles/HandlesFunctions.py | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/Projectrans/Phase2Translator.py b/lib/Projectrans/Phase2Translator.py index 2d02c93..9793648 100644 --- a/lib/Projectrans/Phase2Translator.py +++ b/lib/Projectrans/Phase2Translator.py @@ -2373,11 +2373,14 @@ class Phase2Translator: if 'traceback' in str(_p): _tb_sha1 = _k break + trans.translator.TracebackEnabled = self.traceback_enabled if _tb_sha1 is not None: trans.translator.TracebackInstallSymbol = f'{_tb_sha1}.Install' - _vlog().info( - f"[traceback] InstallSymbol={getattr(trans.translator, 'TracebackInstallSymbol', None)}" - f" file={os.path.basename(src_path)}") + sys.stderr.write( + f"[traceback] file={os.path.basename(src_path)} " + f"enabled={self.traceback_enabled} " + f"InstallSymbol={getattr(trans.translator, 'TracebackInstallSymbol', None)}\n") + sys.stderr.flush() trans.SliceLevel = self.slice_level trans.translator.SliceLevel = self.slice_level trans.translator.SliceCount = 0 diff --git a/lib/core/Handles/HandlesFunctions.py b/lib/core/Handles/HandlesFunctions.py index 5251e04..2ca5a56 100644 --- a/lib/core/Handles/HandlesFunctions.py +++ b/lib/core/Handles/HandlesFunctions.py @@ -2054,12 +2054,16 @@ class FunctionHandle(BaseHandle): func_body = func_body[1:] else: Gen._create_doc_global(doc_symbol, None) - if Node.name == 'main': + if Node.name == 'main' and getattr(self.Trans, 'TracebackEnabled', False): _tb_install: str | None = getattr(self.Trans, 'TracebackInstallSymbol', None) if not _tb_install: _tb_sha1 = getattr(Gen, 'ModuleSha1Map', {}).get('traceback') if _tb_sha1: _tb_install = f'{_tb_sha1}.Install' + if not _tb_install: + raise RuntimeError( + '--traceback: main 入口无法解析 traceback.Install 符号' + '(TracebackInstallSymbol 未设置且 ModuleSha1Map 无 traceback)') if _tb_install: _install_fn = Gen._CreateOrReuseFuncDecl( _tb_install, ir.FunctionType(ir.IntType(32), []))