diff --git a/lib/Projectrans/Phase2Translator.py b/lib/Projectrans/Phase2Translator.py index 6b12c7c..9828d35 100644 --- a/lib/Projectrans/Phase2Translator.py +++ b/lib/Projectrans/Phase2Translator.py @@ -2358,13 +2358,21 @@ class Phase2Translator: # 直接调用它(不依赖 .ctors/.init_array,避免 MinGW 下 .ctors.65534 不执行)。 if self.traceback_enabled: _tb_sha1: str | None = None - for _src_map in (getattr(self, '_shared_source_module_sig_files', {}), self.sig_files): - for _k, _p in _src_map.items(): + for _k, _p in self.sig_files.items(): + try: if 'traceback' in os.path.basename(_p): _tb_sha1 = _k break - if _tb_sha1: - break + if 'Module: traceback' in _ReadTextCached(_p)[:512]: + _tb_sha1 = _k + break + except Exception: + continue + if _tb_sha1 is None: + for _k, _p in getattr(self, '_shared_source_module_sig_files', {}).items(): + if 'traceback' in str(_p): + _tb_sha1 = _k + break if _tb_sha1 is not None: trans.translator.TracebackInstallSymbol = f'{_tb_sha1}.Install' trans.SliceLevel = self.slice_level