Przejdź do głównej zawartości

Rozwiązywanie problemów

Jak poprawnie zgłosić problem:

Jeśli chcesz coś zaproponować, zgłosić błąd albo własne niepowodzenie, lub potrzebujesz pomocy „na żywo”, zawsze możesz się zwrócić tutaj. Wystarczy kliknąć zielony przycisk New issue i wypełnić formularz.

Twórcy będą wdzięczni, jeśli opis problemu będzie możliwie szczegółowy:

  • Wersja twojego systemu operacyjnego; Wersja (numer kompilacji) serwera HLDS (albo ReHLDS);
  • Wersja twojej gry (albo modyfikacji);
  • Wersja Metamod-r (numer albo data kompilacji);
    • Opcjonalnie możesz podać też listę modułów (wpisując meta list w konsoli serwera).
  • Dołącz logi;
  • Dołącz zrzuty awaryjne;

Pomoże to w dokładniejszej analizie i, być może, w naprawieniu twoich problemów w przyszłości.


Jak zdobyć zrzuty awaryjne HLDS\reHLDS

Źródło główne (po rosyjsku). Kopia (po rosyjsku).

Nie publikuj zrzutów ot tak w internecie, bo często zawierają pełne informacje o serwerze, w tym rcon i podobne dane. Do przekazania spakuj je z hasłem, co jest wygodne również dlatego, że kompresują się bardzo dobrze.

Windows

Za pomocą WER (Raportowanie błędów systemu Windows):

  • Włącz WER (raporty o błędach):
  • Przed Vistą:
  • Uruchom drwtsn32.exe i wybierz "Full" przy Crash Dump File. Tam też zobaczysz (albo ustawisz), gdzie zrzuty będą zapisywane.
  • Na Viście i nowszych:
  • Przez edycję rejestru — wygodna metoda od s1lenta:

Szczegółowy i szybki sposób skonfigurowania rejestru pod zrzuty awaryjne, dla początkujących.

  • Ustawienia:
  • NAME_APP - hlds.exe
  • nazwa aplikacji, dla której mają powstawać zrzuty w razie awarii.
  • REG_LINK - HKLM\Software\Microsoft\Windows\Windows Error Reporting
  • ścieżka do sekcji Windows Error Reporting (tego ustawienia najpewniej nie trzeba zmieniać; wydaje mi się, że ścieżki są takie same we wszystkich wersjach Windowsa)
  • DumpType - 2
  • 0 - Zwykły zrzut
  • 1 - Minimalny zrzut
  • 2 - Pełny zrzut
  • DumpCount - 15
  • liczba tworzonych zrzutów; jeśli liczba zrzutów w folderze przekroczy podaną wartość, stary zostanie usunięty, żeby zrobić miejsce nowemu.
  • DumpFolder - C:\CrashDumps
  • ścieżka folderu, w którym będą zapisywane zrzuty.
  • (żeby uniknąć problemów, nie używaj w ścieżkach spacji ani cyrylicy)
  • Instalacja:
  • Pobierz archiwum i je rozpakuj.

  • Uruchom add_RegistryDumps.bat

  • Po zapisaniu do rejestru upewnij się, że usługa Windows Error Reporting jest włączona.

  • Następnie naciśnij Windows + R (klawisz Windows jest między ctrl a alt), albo otwórz cmd.exe, albo Start - Uruchom; zaraz potem wpisz gpedit.msc i spójrz na zrzut ekranu.

Konfiguracja komputera -> Szablony administracyjne -> Składniki systemu Windows -> Raportowanie błędów systemu Windows

Za pomocą narzędzia userdumps

  • Instrukcja od unKn0wn:

Sposób na zdobycie zrzutów przy użyciu narzędzia Microsoftu: UserModeProcessDumper \ kopia "UserModeProcessDumper8_1_2929_5.zip".

Podziękowania dla Leva za ustawienia.

1. Instalacja

Rozpakuj pobrane archiwum (domyślnie do C:\kktools\userdump8.1).

  • Uruchom plik setup.exe z katalogu:
  • Jeśli używasz 32-bitowego Windows XP/2003, to C:\kktools\userdump8.1\x86.
  • Jeśli używasz 64-bitowego Windows XP/2003, to C:\kktools\userdump8.1\x64.
  • W oknie kreatora instalacji kliknij Next.
  • (Tylko dla systemów 32-bitowych) W oknie Terminate Mode wybierz Disable "Dump on Process Termination" feature i kliknij Next.

  • Kliknij Finish i poczekaj na zakończenie instalacji. W oknie User Mode Process Dump Setup kliknij przycisk YES (Jeśli z jakiegoś powodu nie wiesz, jak wejść do ustawień userdump, zawsze znajdziesz je w Panelu sterowania - Process Dumper).
2. Dodanie aplikacji

W otwartym oknie Properties: User Mode Process Dumper Setup kliknij New, dodaj nazwę potrzebnego programu, na przykład: hlds.exe (rozszerzenie jest obowiązkowe!) i kliknij OK

3. Ustawienia

W oknie Properties: User Mode Process Dumper Setup znajdź właśnie utworzoną regułę aplikacji, zaznacz ją i kliknij przycisk Rules W otwartym oknie Process Monitoring Ruless for hlds.exe

  1. Wybierz Use custom rules.
  2. W razie potrzeby zmień folder, w którym zapisywane są zrzuty.
  3. W Exception Codes zaznacz (lewym przyciskiem) następujące kody: "Access Violation, Overflow, Illegal Instruction, Stack overflow."
  4. Ustaw parametr Save Mode na Cyclic saving (5 times). Powinno to wyglądać mniej więcej tak:

PS: polecam używać go razem z Dr Watsonem ustawionym na typ zrzutu "Brief", bo Dr Watson prowadzi logi w formacie tekstowym, co pozwala wybrać potrzebne zrzuty. A userdump wykona pełne zrzuty.

Linux

Serwer trzeba uruchomić z flagą -debug.

Jeśli w systemie zainstalowany jest gdb, czytelne informacje o błędzie trafiają automatycznie do pliku debug.log. Dlatego warto go zainstalować (polecenie zależy od systemu; na Debianie\Ubuntu jest to apt install gdb). Choć nie jest to konieczne do tworzenia zrzutów, w praktyce warto to zrobić, kiedy tylko się da, bo miejsce awarii zapisuje się w debug.log, co pozwala od razu powiedzieć coś o błędzie. Zdobycie tych samych informacji na innym systemie z pliku zrzutu wymagałoby wszystkich plików binarnych z serwera.

Domyślnie plik zrzutu nazywa się core, zapisuje się w katalogu roboczym i w związku z tym będzie nadpisywany. Żeby tego uniknąć, możesz dodać do nazwy identyfikator procesu:

echo 1 > /proc/sys/kernel/core_uses_pid

albo kierować zrzuty do /tmp:

echo /tmp/%e-%t-%p-%c.dmp > /proc/sys/kernel/core_pattern Więcej informacji tutaj.

Uruchomienie bez sudo (jako root; w przeciwnym razie ogólne ustawienia systemu trzeba ustawić na unlimited):

ulimit -c unlimited && ./hlds_run -debug ...

Uruchomienie z sudo (jako użytkownik hlds):

ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && ./hlds_run -debug ..."

Sprawdzenie uruchomienia przez sudo:

ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && whoami && ulimit -Sc && ./hlds_run -debug ..."

wypisuje nazwę użytkownika, na którym nastąpi uruchomienie, oraz limit tworzenia zrzutów, a następnie uruchamia serwer.

Do przetestowania ustawień zrzutów możesz użyć modułu stworzonego specjalnie w tym celu: FixItAll \ Kopia FixItAll or Crash.sma*.


Tabela zbiorcza:

Folder - katalog twojej modyfikacji albo gry. W kolumnach i znajdują się nazwy plików wykonywalnych z folderu dlls, który leży w katalogu twojej modyfikacji albo gry.

- wersja dla tej platformy nie istnieje

Gra \ ModyfikacjaFolder
Action Half-Lifeactionahl.dllahl.so
Adrenaline Gameragag.dllag.so
openAGagag.dllag.so
Azure Sheepasheephl.dll
Base Defensebdefserver.dllserver.so
The Battle Groundsbgbg.dllbg.so
Brutal Half-Lifebhlbhl.dll
Brain Breadbrainbreadbb.dll
Half-Life: Blue Shiftbshifthl.dllbshift.so
Bumper Carsbumpercarshl.dll
BuzzyBotsbuzzybotsbb.dll
Chicken Fortress 3ckf3mp.dll
Counter-Strike 1.0cs10mp.dll
Counter-Strike 1.5csv15mp.dll
Counter-Strike 1.6cstrikemp.dllcs.so
Counter-Strike:Condition Zeroczeromp.dllcs.so
Counter-Strike:Condition Zero Deleted Scenesczerorcz.dllcz.so
Desert Crisisdcrisisdc.dlldc.so
Half-Life: Decaydecaydecay.dll
Deathmatch Classicdmcdmc.dlldmc.so
Day of Defeatdoddod.dlldod.so
Digital Paintballdpbpb.dllpb.i386.so
Earth's Special Forces (stary)esfhl.dllhl.so (leży w linuxdll, a nie w katalogu dlls)
Earth's Special Forcesesfhl.dllhl.so
Existenceexistenceexistence.dll
Firearmsfirearmsfirearms.dll
Frontline Forcefrontlinefrontline.dllfront.so
Gangsta Warsgangstawarsgwars27.dll
Gangwarsgangwarsmp.dll
Opposing Forcegearboxopfor.dllopfor.so
Global Warfareglobalwarfaremp.dllgw.so
Goldeneyegoldeneyemp.dll
Headcrab Frenzyhcfrenzyhcfrenzy.dllhcfrenzy.so
Half-Life 1.5: Weapon Editionhl15wehl.dllhl.so
HL-Rallyhlrallyhlrally.dllhlr.so
Holy Warsholywarsholywars.dllhl.so
Hostile Intenthostileintenthl.dllhl.so
International Online Socceriosios.dllios.so
Judgementjudgedmmp.dlljudge.so
Kanonballkanonballkanonball.dllhl.so
Monkeystrikemonkeystrikemonkey.dllms.so
Morbid InclinationMorbidPRmorbid.dllmorbid.so
Move In!moveinhl.dllhl.so
Master Sword Continuedmscms.dll
Natural Selectionnsns.dllns.so
Natural Selection Betanspns.dllns.so
Over Groundogog.dllog.so
Outlawsmodolhl.dllol.so
Operations 1942ops1942spirit.dllspirit.so
Open-Source Jailbreakosjbjail.dllosjb.so
Out Breakoutbreakhl.dll
Oz Deathmatchozmp.dllmp.so
Paintballpaintballmp.dllpb.so
Public Enemypenemype.dllpe.so
Point of No Returnponreturnmp.dllponr.so
Pirates, Vikings and Knightspvkhl.dllhl.so
Rocket Crowbar 2rc2rc2.dllrc2.so
Resident Evil : Cold Bloodrecbb2recb.dllrecb.so
Gunman Chroniclesrewolfgunman.dll
Ricochetricochetmp.dllricochet.so
Rocket Crowbarrockcrowbarrc.dllrc.so
Rival Speciesrspecieshl.dllhl.so
Scientist Huntscihuntshunt.dllshunt.so
The Shipshipship.dllship.so
Science & Industrysisi.dllsi.so
Snow-Warsnowsnow.dllsnow.so
StargateTC (stary, 1.x)stargatetchl.dllhl.so
StargateTC (zaktualizowany, 2.x)stargatetchl.dllstc.so
StargateTC (zaktualizowany, 2.x)stargatetchl.dllstc_i386_opt.so
Sven Coop (stary)svencoophl.dllhl.so
Sven Coop (Steam)svencoopserver.dllserver.so
Swarmswarmswarm.dllswarm.so
Team Fortress Classictfctfc.dlltfc.so
The Wastesthewastesthewastes.dllthewastes.so
Project Timelesstimelesstimeless.dllpt.so
Tour of Dutytodhl.dllhl.so
Train Hunterstrainhuntersth.dllth.so
The Specialiststsmp.dllts.so
The Trenchestttt.dlltt.so
Underworld Bloodlineunderworlduw.dlluw.so
Half-Lifevalvehl.dllhl.so
VampireSlayervsmp.dllvs.so
Wanted!wantedhlwanted.dllhl.so
Wizard Wars (Steam)wizardwarswizardwars.dllwizardwars.so
Wizard Wars Beta (Steam)wizardwars_betawizardwars.dllwizardwars.so
Wizard Wars (stary)wizwarsmp.sohl.dll
WormsHLwormshlwormshl.dllwormshl.so
Zombie Paniczpmp.dllhl.so

Każda pomoc i każdy wkład w projekt są mile widziane. Im więcej testów i opinii, tym lepiej rozwijają się Metamod-r i pozostałe powiązane produkty. Powodzenia!