故障排查
如何正确地反馈问题:
如果你想提出建议、报告缺陷或故障,或者需要「实时」的帮助与支持,随时可以到这里提交。点击绿色的 New issue 按钮并填写表单即可。
如果问题的描述尽可能详尽,开发者会非常感激:
- 你的操作系统版本; HLDS 服务器的版本(构建号),或 ReHLDS 的版本;
- 你的游戏(或模组)版本;
- Metamod-r 的版本(构建号或构建日期);
- 可以顺带附上模块列表(在服务器控制台输入
meta list获取)。
- 可以顺带附上模块列表(在服务器控制台输入
- 附上日志;
- 附上崩溃转储;
这有助于更彻底地分析,并在日后尽可能修复你遇到的问题。
获取 HLDS\reHLDS 的崩溃转储
请不要把转储直接发到公开网络上,它们通常包含服务器的完整信息,包括 rcon 等等。传输时可以打包成带密码的压缩包,这样做还有一个好处:转储的压缩率很高。
Windows
使用 WER(Windows 错误报告):
- 启用 WER(错误报告):
- Vista 之前的系统:
- 运行 drwtsn32.exe,在 Crash Dump File 旁选择 "Full"。在这里还可以查看(或设置)转储的保存位置。
- Vista 及更高版本:
- 编辑注册表,这是来自 s1lent 的便捷方法:
面向新手的注册表配置详解,快速拿到转储。
- 设置项:
- NAME_APP -
hlds.exe- 崩溃时需要生成转储的应用程序名称。
- REG_LINK -
HKLM\Software\Microsoft\Windows\Windows Error Reporting- Windows 错误报告项的路径(这一项多半不需要改动,我认为各版本 Windows 的路径都一样)
- DumpType -
20—— 普通转储1—— 最小转储2—— 完整转储- DumpCount -
15- 要保留的转储数量;当目录中的转储数超过该值时,会删除旧的转储以便生成新的。
- DumpFolder -
C:\CrashDumps- 转储的保存目录路径。
- (为避免出问题,路径中不要使用空格或西里尔字母)
- 安装步骤:
下载压缩包并解压。
运行 add_RegistryDumps.bat
写入注册表之后,务必确认 Windows 错误报告服务已启用。
然后按下 Windows + R 组合键(Windows 键位于 ctrl 和 alt 之间),也可以调用 cmd.exe 或「开始 - 运行」,随后输入 gpedit.msc,接着参照截图操作。
计算机配置 -> 管理模板 -> Windows 组件 -> Windows 错误报告
使用 userdumps 工具
- 来自 unKn0wn 的说明:
使用微软提供的工具获取转储的方法:
UserModeProcessDumper \
镜像:"UserModeProcessDumper8_1_2929_5.zip".
感谢 Lev 提供的设置方案。
1. 安装
解压下载到的压缩包(默认路径为 C:\kktools\userdump8.1)。
- 从以下目录运行 setup.exe:
- 如果使用 32 位的 Windows XP/2003,则为 C:\kktools\userdump8.1\x86。
- 如果使用 64 位的 Windows XP/2003,则为 C:\kktools\userdump8.1\x64。
- 在安装向导窗口中点击 Next。
- (仅限 32 位系统)在 Terminate Mode 窗口中选择 Disable "Dump on Process Termination" feature,然后点击 Next。
- 点击 Finish 并等待安装完成。 在 User Mode Process Dump Setup 窗口中点击 YES 按钮(如果你不清楚如何进入 userdump 的设置界面,随时可以在「控制面板 - Process Dumper」中找到)。
2. 添加应用程序
在打开的 Properties: User Mode Process Dumper Setup 窗口中点击 New,添加目标程序名称,例如 hlds.exe(扩展名必须写!),然后点击 OK
3. 设置
在 Properties: User Mode Process Dumper Setup 窗口中找到刚创建的应用规则,选中它并点击 Rules 按钮 在打开的 Process Monitoring Ruless for hlds.exe 窗口中
- 选择 Use custom rules。
- 如有需要,修改转储的保存目录。
- 在 Exception Codes 中(用左键)勾选以下代码:"Access Violation、Overflow、Illegal Instruction、Stack overflow"。
- 把 Save Mode 参数设为 Cyclic saving(5 次)。 最终大致是这样:
附注:建议与转储类型设为 "Brief" 的 Dr Watson 搭配使用,因为后者会以文本格式保留日志,便于你挑出需要的转储;而 userdump 负责生成完整转储。
Linux
服务器必须使用 -debug 参数启动。
如果系统中安装了 gdb,错误的明确信息会自动写入 debug.log 文件,因此建议安装它(命令取决于所用系统,在 Debian\Ubuntu 上是 apt install gdb)。虽然生成转储并不强制要求它,但只要条件允许就应该装上:崩溃位置会被写入 debug.log,让你立刻对错误有所判断。若要在另一台机器上从转储文件中获得同样的信息,则需要服务器上的全部二进制文件。
默认情况下转储文件名为 core,写入工作目录,因而会被覆盖。为避免这一点,可以把进程 ID 加入文件名:
echo 1 > /proc/sys/kernel/core_uses_pid
或者把转储写入 /tmp:
echo /tmp/%e-%t-%p-%c.dmp > /proc/sys/kernel/core_pattern 更多信息见
here.
不使用 sudo 启动(以 root 身份,否则需要把系统全局设置改为 unlimited):
ulimit -c unlimited && ./hlds_run -debug ...
使用 sudo 启动(以 hlds 用户身份):
ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && ./hlds_run -debug ..."
检查 sudo 下的启动情况:
ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && whoami && ulimit -Sc && ./hlds_run -debug ..."
会显示启动所用的用户名和转储创建上限,随后启动服务器。
要验证转储设置,可以使用一个专门开发的模块:
FixItAll \
FixItAll mirror or
Crash.sma*.
汇总表:
Folder —— 你的模组或游戏所在目录。在
and
两列中给出的是位于「你的模组或游戏」目录下 dlls 文件夹中的可执行文件名。
❌ —— 该平台不存在对应版本
| 游戏 \ 模组 | 目录 | ![]() | ![]() |
|---|---|---|---|
| Action Half-Life | action | ahl.dll | ahl.so |
| Adrenaline Gamer | ag | ag.dll | ag.so |
| openAG | ag | ag.dll | ag.so |
| Azure Sheep | asheep | hl.dll | ❌ |
| Base Defense | bdef | server.dll | server.so |
| The Battle Grounds | bg | bg.dll | bg.so |
| Brutal Half-Life | bhl | bhl.dll | ❌ |
| Brain Bread | brainbread | bb.dll | ❌ |
| Half-Life: Blue Shift | bshift | hl.dll | bshift.so |
| Bumper Cars | bumpercars | hl.dll | ❌ |
| BuzzyBots | buzzybots | bb.dll | ❌ |
| Chicken Fortress 3 | ckf3 | mp.dll | ❌ |
| Counter-Strike 1.0 | cs10 | mp.dll | ❌ |
| Counter-Strike 1.5 | csv15 | mp.dll | ❌ |
| Counter-Strike 1.6 | cstrike | mp.dll | cs.so |
| Counter-Strike:Condition Zero | czero | mp.dll | cs.so |
| Counter-Strike:Condition Zero Deleted Scenes | czeror | cz.dll | cz.so |
| Desert Crisis | dcrisis | dc.dll | dc.so |
| Half-Life: Decay | decay | decay.dll | ❌ |
| Deathmatch Classic | dmc | dmc.dll | dmc.so |
| Day of Defeat | dod | dod.dll | dod.so |
| Digital Paintball | dpb | pb.dll | pb.i386.so |
| Earth's Special Forces (Old) | esf | hl.dll | hl.so(位于 linuxdll,而非 dlls 目录) |
| Earth's Special Forces | esf | hl.dll | hl.so |
| Existence | existence | existence.dll | ❌ |
| Firearms | firearms | firearms.dll | ❌ |
| Frontline Force | frontline | frontline.dll | front.so |
| Gangsta Wars | gangstawars | gwars27.dll | ❌ |
| Gangwars | gangwars | mp.dll | ❌ |
| Opposing Force | gearbox | opfor.dll | opfor.so |
| Global Warfare | globalwarfare | mp.dll | gw.so |
| Goldeneye | goldeneye | mp.dll | ❌ |
| Headcrab Frenzy | hcfrenzy | hcfrenzy.dll | hcfrenzy.so |
| Half-Life 1.5: Weapon Edition | hl15we | hl.dll | hl.so |
| HL-Rally | hlrally | hlrally.dll | hlr.so |
| Holy Wars | holywars | holywars.dll | hl.so |
| Hostile Intent | hostileintent | hl.dll | hl.so |
| International Online Soccer | ios | ios.dll | ios.so |
| Judgement | judgedm | mp.dll | judge.so |
| Kanonball | kanonball | kanonball.dll | hl.so |
| Monkeystrike | monkeystrike | monkey.dll | ms.so |
| Morbid Inclination | MorbidPR | morbid.dll | morbid.so |
| Move In! | movein | hl.dll | hl.so |
| Master Sword Continued | msc | ms.dll | ❌ |
| Natural Selection | ns | ns.dll | ns.so |
| Natural Selection Beta | nsp | ns.dll | ns.so |
| Over Ground | og | og.dll | og.so |
| Outlawsmod | ol | hl.dll | ol.so |
| Operations 1942 | ops1942 | spirit.dll | spirit.so |
| Open-Source Jailbreak | osjb | jail.dll | osjb.so |
| Out Break | outbreak | hl.dll | ❌ |
| Oz Deathmatch | oz | mp.dll | mp.so |
| Paintball | paintball | mp.dll | pb.so |
| Public Enemy | penemy | pe.dll | pe.so |
| Point of No Return | ponreturn | mp.dll | ponr.so |
| Pirates, Vikings and Knights | pvk | hl.dll | hl.so |
| Rocket Crowbar 2 | rc2 | rc2.dll | rc2.so |
| Resident Evil : Cold Blood | recbb2 | recb.dll | recb.so |
| Gunman Chronicles | rewolf | gunman.dll | ❌ |
| Ricochet | ricochet | mp.dll | ricochet.so |
| Rocket Crowbar | rockcrowbar | rc.dll | rc.so |
| Rival Species | rspecies | hl.dll | hl.so |
| Scientist Hunt | scihunt | shunt.dll | shunt.so |
| The Ship | ship | ship.dll | ship.so |
| Science & Industry | si | si.dll | si.so |
| Snow-War | snow | snow.dll | snow.so |
| StargateTC (Old, 1.x) | stargatetc | hl.dll | hl.so |
| StargateTC (Updated, 2.x) | stargatetc | hl.dll | stc.so |
| StargateTC (Updated, 2.x) | stargatetc | hl.dll | stc_i386_opt.so |
| Sven Coop (Old) | svencoop | hl.dll | hl.so |
| Sven Coop (Steam) | svencoop | server.dll | server.so |
| Swarm | swarm | swarm.dll | swarm.so |
| Team Fortress Classic | tfc | tfc.dll | tfc.so |
| The Wastes | thewastes | thewastes.dll | thewastes.so |
| Project Timeless | timeless | timeless.dll | pt.so |
| Tour of Duty | tod | hl.dll | hl.so |
| Train Hunters | trainhunters | th.dll | th.so |
| The Specialists | ts | mp.dll | ts.so |
| The Trenches | tt | tt.dll | tt.so |
| Underworld Bloodline | underworld | uw.dll | uw.so |
| Half-Life | valve | hl.dll | hl.so |
| VampireSlayer | vs | mp.dll | vs.so |
| Wanted! | wantedhl | wanted.dll | hl.so |
| Wizard Wars (Steam) | wizardwars | wizardwars.dll | wizardwars.so |
| Wizard Wars Beta (Steam) | wizardwars_beta | wizardwars.dll | wizardwars.so |
| Wizard Wars (Old) | wizwars | mp.so | hl.dll |
| WormsHL | wormshl | wormshl.dll | wormshl.so |
| Zombie Panic | zp | mp.dll | hl.so |
欢迎对本项目提供任何形式的帮助与贡献。测试和反馈越多,Metamod-r 及相关产品的发展就越有力。祝顺利!



