Как посмотреть лог ошибки игры

World of Warplanes

Центр поддержки

Все статьи

Как найти необходимый лог и дамп клиента

Файл лога (от англ. log — журнал событий, протокол) имеет разрешение *.log, начинает записываться сразу после запуска клиента игры и прекращает записываться после закрытия игрового клиента.

Файл дампа (от англ. dump) имеет разрешение *.dmp и содержит информацию о критической ошибке, произошедшей в клиенте игры. Его запись производится автоматически, когда игровой процесс завершается критической ошибкой.

Файлы логов и дампов хранятся в папке logs, которая находится в системном разделе жёсткого диска. 

Дата в названии файлов лога и дампов записывается в следующем формате: ГОД МЕСЯЦ ДЕНЬ_ЧАСЫ МИНУТЫ СЕКУНДЫ.

Для Windows XP расположение следующее:

C:Documents and SettingsИмя пользователяApplication DataWargaming.netWorld of Warplaneslogs.

Для Windows Vista, Windows 7, Windows 8 расположение следующее:

C:UsersИмя пользователяAppDataRoamingWargaming.netWorld of Warplaneslogs.

Папка Application Data, или AppData, по умолчанию скрыта. Без редактирования параметров отображения папок в операционной системе её можно открыть следующим образом:

  1. Нажмите сочетание клавиш Win+R.
  2. В появившейся командной строке введите %appdata% и нажмите OK.

Кроме того, вы можете попасть в папку logs, запустив файл ToLogs.cmd, который находится в корневой папке с клиентом игры.

Рассмотрим пример:

Клиент игры завершает работу из-за критической ошибки. В данном сообщении содержится название файла, который нам необходим:

В данном случае нам необходимы следующие файлы:

130623_184810.dmp

130623_184810.log

Находим нужные файлы в папке logs (её расположение указано выше):

В приведённом примере лог (файл событий клиента игры) был создан 23 июня 2013 года в 18 часов 48 минут 10 секунд. Файлу дампа присваивается имя, идентичное файлу лога, поэтому названия обоих файлов (лога и дампа) будут одинаковыми.

Размер файла, прикрепляемого к заявке, не должен превышать 800 КБ. В некоторых случаях файл лога может превышать лимит, поэтому его необходимо упаковать в zip-архив.

Похожие статьи

Где найти и как загрузить логи

    This article is available in 15 languages:

  • English

  • Deutsch

  • Türkçe

  • Norsk

  • Español

  • Nederlands

  • Русский

  • Français

  • Português

  • Română

  • Čeština

  • Italiano

  • 中文(简体)

  • Български

  • Magyar

Last update: 01 Mar 2022 14:28 UTC

Short link to this article: https://truckersmp.com/index.php/kb/1500



Что такое логи и почему они так полезны

Поскольку в логах сохраняется все, что делает ваша игра во время загрузки или во время игры, с их помощью очень легко найти причины сбоев игры или лаунчера. Там даже может быть важное сообщение об ошибке, которое вы можете пропустить, потому что оно не видно в игре.

Вы можете легко поделиться необходимым количеством логов с другими игроками или нашей службой поддержки для дальнейшего расследования ваших крашей. В этой статье базы знаний мы расскажем вам, как правильно находить и загружать логи.


Где найти логи

Выполните следующие действия, чтобы найти game.log:

  1. Откройте проводник файлов Windows
  2. Перейдите в раздел «Документы»
  3. Щелкните на папке «Euro Truck Simulator 2» или «American Truck Simulator».
  4. Прокрутите список или найдите «game.log».

picture


Выполните следующие действия, чтобы найти last_crash.log:

  1. Откройте проводник файлов Windows
  2. Перейдите в раздел «Документы»
  3. Щелкните на папке «ETS2MP» или «ATSMP».
  4. Прокрутите список или найдите «last_crash.log».

picture2


Выполните следующие действия, чтобы найти последний client_.log:

  1. Откройте проводник файлов Windows
  2. Перейдите в раздел «Документы»
  3. Откройте папку «ETS2MP» или «ATSMP».
  4. Нажмите на папку «logs» в верхней части.
  5. Прокрутите список или найдите последний «client.log».

picture3


Как делиться логами

Теперь, когда вы знаете, как найти логи Euro Truck Simulator 2 или American Truck Simulator, вы можете наконец начать загружать их и делиться ими с другими людьми. В большинстве случаев рекомендуется загружать журналы на веб-сайт, который может хранить текст в режиме онлайн в течение длительного времени. Поскольку журналы часто бывают очень длинными, для большей ясности следует загружать их по одному.

  1. Откройте лог, который вы хотите загрузить, дважды щелкнув файл, и скопируйте все (CTRL + A, CTRL + C).
  2. Перейдите по адресу https://pastebin.com.
  3. Вставьте скопированный текст в текстовое поле (CTRL + V).
  4. Как только вы будете готовы загрузить свой лог, нажмите на: «Create new paste».
  5. Скопируйте URL сайта или нажмите на «Copy paste link to clipboard».

Как только вы получите ссылку на pastebin, вы сможете поделиться логом с несколькими людьми или службой поддержки. Просто отправьте им URL, который вы скопировали в шаге 5!


Что необходимо проверить перед загрузкой

  1. Откройте лог и проверьте его актуальность.
  2. В некоторых журналах может присутствовать имя вашей локальной учетной записи Windows, убедитесь, что с этим все в порядке.
  3. Проверьте, загружаете ли вы лог целиком, а не только его часть.

Мы надеемся, что это поможет вам найти, понять и загрузить журналы, упомянутые в этой статье. Если у вас возникли проблемы с выполнением любого из перечисленных здесь шагов, обратитесь в службу поддержки по адресу truckersmp.com/support.

Как найти лог вылета в игре СТАЛКЕР ?

2016-02-02 14:04:18

>

Сразу после вылета открыть любой текстовый редактор и выбрать в меню «правка» или в контекстном меню по правой кнопке мышки кнопку «ВСТАВИТЬ». Т.Е. сразу после вылета лог хранится в буфере обмена
Полученный текст и будет логом вылета. Или же смотрим последние строки в текстовом документе по пути:
  C:Documents and SettingsAll UsersДокументыSTALKER-SHOClogs (т.е. общие документыпапка Сталкер)


Пример лога вылета:

[error]Expression    :

[error]Function      : CInifile::r_section

[error]File          : Xr_ini.cpp

[error]Line          : 544

[error]Description   : fatal error

[error]Arguments     : Can't open section 'string_table'. Please attach [*.ini_log] file to your bug report

> Nikita Krasovsky, NLC 7

2023-06-04 21:15:51

> Nikita Krasovsky, OGSR, ОП2,
Народная Солянка, L.U.R.K

2023-06-04 19:06:57

> Nikita Krasovsky, OGSR, Народная Солянка

2023-06-04 17:12:10

Знатоки, подскажите модификацию на тч, соханяющую ориг сюжет, но с правками, новыми стволами, может графика и какие нибудь доп квесты?

2023-06-04 17:07:30

Как скачать ее

2023-06-04 14:20:10

> Vitaly Novgorodsky, ожидай Беларусь — онлайн и кооп и доп.
фишки

2023-06-04 14:16:55

> Мизгирь, все знают, всем …
ладно, проехали))

2023-06-04 12:02:50

> Melok81, привет

2023-06-04 10:54:13

> Funny Ball, материться плохо!

2023-06-04 10:54:09

Всем здарова, Сталкеры!

2023-06-04 10:35:34

> Мизгирь, хотя он тоже ко-оп по сути…

2023-06-04 10:15:37

> Vitaly Novgorodsky, X-RAY Multiplayer Extension

2023-06-04 10:14:27

всем привет. есть ли модиикация с онлайном? ( не всмысле кооп с другом проходить )

2023-06-04 01:50:01

мне BMX в итоге больше зашел =)

2023-06-03 23:12:16

> AlHazrad, разумеется знаю, потом Дёсны пошли ))д

2023-06-03 22:57:56

> Dzgamir, Ну у меня Салют был. на котором я не мог нормально кататься ибо рост не позволял. ну знаешь эту машину наверно =)

2023-06-03 22:54:07

> AlHazrad, хочется качественную вещь, тем более всем миром собирали, а детстве у меня был «урал» с подрамной техникой посадки без седла.

2023-06-03 22:37:24

> Dzgamir, ну что прямо хуже чем BMX из твоего детства? =)

2023-06-03 22:35:05

> AlHazrad, ты белорусские магазины изучал? я да.

2023-06-03 22:29:19

40к норм лисопед вполне себе. он же не профиссиональный спртсмен которому по работе надо топоый.

2023-06-03 22:28:14

Авторизация

Admin,
Кобальт,
Dzgamir,
dik255,
Devis,
Hosty,
Пещерный,
Лисс666,
Konstantin Fyodorov,
SAO,
Igor Baskov,
renkima,
Mikhail Kravtsov,
Asteriskm,
VorazevskiLAV,
Иннокентий Максимов,
Егор Патрон,
Валерий Войтецов,
Nikita Krasovsky,
Vertyj,
Бесшумник,
Someone,
Антон Долганов,
MoRGer,
Кирилл Смирнов,
Alexander Kurmanbaev,
Юрий Одинцов,
Сергей Шелби,
Mikhail Spiridonov,
Константин Лосенко,
Игровой Канал The Golden Wolf,
SkyKiller,
Stanislav Shasherin,
Евгений Акимов,
Alexey Uvarov,
Mikhail Mazanov,
GOPIIIOK,
Андрей Марчук,

#1

Отправлено 29 Март 2013 — 00:17

Leha85

    Администратор


  • 38 971 сообщений
  • 40050 благодарностей
  • 7 456 тем создано
  • 0 баллов предупреждения

Настроение: Не выбрано

*
Популярное сообщение!

При написании сообщения о вылетах и ошибках игры нужно прикреплять лог, чтобы можно было понять причину и попытаться Вам помочь. Так как многие не знают что такое лог и где его искать сделал наглядную инструкцию:

Итак, заходим в папку документы:

19891386_s.jpg

Далее заходим в папку Euro Truck Simulator 2:

19891392_s.jpg

Видим текстовый файл, который может называться game или game.log, в зависимости от ваших настроек отображения расширений файлов:

19891393_s.jpg 19891394_s.jpg

Все логи выкладываются файлом на обменник, либо на специальные web-приложения! Например, на Яндекс.Диск или Hastebin.

Не забывайте убирать кликабельную ссылку под спойлер!

  • 43

Приготовьте отладчик! Пишем приложение с ошибками, затем учимся их находить и дебажить

https://gbcdn.mrgcdn.ru/uploads/post/2735/og_image/ce05da5c8c8f97a3bf7713b7cbaf3802.png

Иногда в приложении встречаются ошибки, которые нельзя увидеть даже после запуска. Например, код компилируется, проект запускается, но результат далёк от желаемого: приложение падает или вдруг появляется какая-то ошибка (баг). В таких случаях приходится «запасаться логами», «брать в руки отладчик» и искать ошибки.

Часто процесс поиска и исправления бага состоит из трёх шагов:

  1. Воспроизведение ошибки — вы понимаете, какие действия нужно сделать в приложении, чтобы повторить ошибку.
  2. Поиск места ошибки — определяете класс и метод, в котором ошибка происходит.
  3. Исправление ошибки.

Если приложение не падает и чтение логов ничего не даёт, то найти точное место ошибки в коде помогает дебаггер (отладчик) — инструмент среды разработки.

    Чтобы посмотреть на логи и воспользоваться дебаггером, давайте напишем простое тестовое (и заведомо неправильное) приложение, которое даст нам все возможности для поиска ошибок.

    Это будет приложение, которое сравнивает два числа. Если числа равны, то будет выводиться результат «Равно», и наоборот. Начнём с простых шагов:

  1. Открываем Android Studio. 
  2. Создаём проект с шаблоном Empty Activity. 
  3. Выбираем язык Java, так как его, как правило, знают больше людей, чем Kotlin. 

Нам автоматически откроются две вкладки: activity_main.xml и MainActivity.java. Сначала нарисуем макет: просто замените всё, что есть в activity_main.xml, на код ниже:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
 
  <EditText
     android:id="@+id/first_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toTopOf="parent" />
 
  <EditText
     android:id="@+id/second_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
 
  <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Равно?"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/second_number_et" />
 
  <TextView
     android:id="@+id/answer_tv"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text=""
     android:textSize="32sp"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>

Можете запустить проект и посмотреть, что получилось:

Теперь оживим наше приложение. Скопируйте в MainActivity этот код:

public class MainActivity extends AppCompatActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     final Button button = (Button) findViewById(R.id.button);
     final EditText first = (EditText) findViewById(R.id.first_number_et);
     final EditText second = (EditText) findViewById(R.id.second_number_et);
     final TextView answer = (TextView) findViewById(R.id.answer_tv);
 
     button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Integer firstInt = Integer.parseInt(first.getText().toString());
           Integer secondInt = Integer.parseInt(second.getText().toString());
           if (firstInt == secondInt) {
              answer.setText("Равно");
           } else {
              answer.setText("Равно");
           }
        }
     });
  }
}

В этом коде всё просто: 

  1. Находим поля ввода, поле с текстом и кнопку.
  2. Вешаем на кнопку слушатель нажатий.
  3. По нажатию на кнопку получаем числа из полей ввода и сравниваем их.
  4. В зависимости от результата выводим «Равно» или «Не равно».

Запустим приложение и введём буквы вместо чисел:

Нажмём на кнопку, и приложение упадёт! Время читать логи. Открываем внизу слева вкладку «6: Logcat» и видим:

Читать логи просто: нужно найти красный текст и прочитать сообщение системы. В нашем случае это java.lang.NumberFormatException: For input string: «f». Указан тип ошибки NumberFormatException, который говорит, что возникла какая-то проблема с форматированием числа. И дополнение: For input string: «f». Введено “f”. Уже можно догадаться, что программа ждёт число, а мы передаём ей символ. Далее в красном тексте видно и ссылку на проблемную строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). Проблема в методе onClick класса MainActivity, строка 24. Можно просто кликнуть по ссылке и перейти на указанную строку:

int firstInt = Integer.parseInt(first.getText().toString());

Конечно, метод parseInt может принимать только числовые значения, но никак не буквенные! Даже в его описании это сказано — и мы можем увидеть, какой тип ошибки этот метод выбрасывает (NumberFormatException).

Здесь мы привели один из примеров. Типов ошибок может быть огромное количество, все мы рассматривать не будем. Но все ошибки в Logcat’е указываются по похожему принципу: 

  • красный текст;
  • тип ошибки — в нашем случае это NumberFormatException;
  • пояснение — у нас это For input string: «f»;
  • ссылка на строку, на которой произошла ошибка — здесь видим MainActivity.java:26. 

Исправим эту ошибку и обезопасим себя от некорректного ввода. Добавим в наши поля ввода android:inputType=»number», а остальной код оставим без изменений:

...
<EditText
  android:id="@+id/first_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toTopOf="parent" />
 
<EditText
  android:id="@+id/second_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
...

    Теперь можем вводить только числа. Проверим, как работает равенство: введём одинаковые числа в оба поля. Всё в порядке:

На равенство проверили. Введём разные числа: 

Тоже равно. То есть приложение работает, ничего не падает, но результат не совсем тот, который требуется. Наверняка вы и без дебаггинга догадались, в чём ошибка, потому что приложение очень простое, всего несколько строк кода. Но такие же проблемы возникают в приложениях и на миллион строк. Поэтому пройдём по уже известным нам этапам дебаггинга:

  1. Воспроизведём ошибку: да, ошибка воспроизводится стабильно с любыми двумя разными числами.
  2. Подумаем, где может быть ошибка: наверняка там, где сравниваются числа. Туда и будем смотреть.
  3. Исправим ошибку: сначала найдём её с помощью дебаггера, а когда поймём, в чём проблема, — будем исправлять.

И здесь на помощь приходит отладчик. Для начала поставим точки останова сразу в трёх местах:

    Чтобы поставить или снять точку останова, достаточно кликнуть левой кнопкой мыши справа от номера строки или поставить курсор на нужную строку, а затем нажать CTRL+F8. Почему мы хотим остановить программу именно там? Чтобы посмотреть, правильные ли числа сравниваются, а затем определить, в какую ветку в нашем ветвлении заходит программа дальше. Запускаем программу с помощью сочетания клавиш SHIFT+F9 или нажимаем на кнопку с жучком:

  

    Появится дополнительное окно, в котором нужно выбрать ваш девайс и приложение:

Вы в режиме дебага. Обратите внимание на две вещи:

  1. Точки останова теперь помечены галочками. Это значит, что вы находитесь на экране, где стоят эти точки, и что дебаггер готов к работе.
  2. Открылось окно дебага внизу: вкладка «5: Debug». В нём будет отображаться необходимая вам информация.

    Введём неравные числа и нажмём кнопку «РАВНО?». Программа остановилась на первой точке:

Давайте разбираться:

  1. Сразу подсвечивается синим строка, где программа остановлена: в окне кода на 28-й строке и в левом окне отладчика (там даже можно увидеть, какой метод вызван, — onClick).
  2. В правом, основном окне отладчика, всё гораздо интереснее. Здесь можно увидеть инстансы наших вью (answer, first, second), в конце которых серым текстом даже отображаются их id. Но интереснее всего посмотреть на firstInt и secondInt. Там записаны значения, которые мы сейчас будем сравнивать.

Как видим, значения именно такие, какие мы и ввели. Значит, проблема не в получении чисел из полей. Давайте двигаться дальше — нам нужно посмотреть, в правильную ли ветку мы заходим. Для этого можно нажать F8 (перейти на следующую строку выполнения кода). А если следующая точка останова далеко или в другом классе, можно нажать F9 — программа просто возобновит работу и остановится на следующей точке. В интерфейсе эти кнопки находятся здесь:

Остановить дебаггер, если он больше не нужен, можно через CTRL+F2 или кнопку «Стоп»:

    В нашем случае неважно, какую кнопку нажимать (F9 или F8). Мы сразу переходим к следующей точке останова программы:

Ветка правильная, то есть логика программы верна, числа firstInt и secondInt не изменились. Зато мы сразу видим, что подпись некорректная! Вот в чём была ошибка. Исправим подпись и проверим программу ещё раз.

    Мы уже починили два бага: падение приложения с помощью логов и некорректную логику (с помощью отладчика). Хеппи пас (happy path) пройден. То есть основная функциональность при корректных данных работает. Но нам надо проверить не только хеппи пас — пользователь может ввести что угодно. И программа может нормально работать в большинстве случаев, но вести себя странно в специфических состояниях. Давайте введём числа побольше и посмотрим, что будет:

Не сработало — программа хочет сказать, что 1000 не равна 1000, но это абсурд. Запускаем приложение в режиме отладки. Точка останова уже есть. Смотрим в отладчик:

Числа одинаковые, что могло пойти не так? Обращаем внимание на тип переменной — Integer. Так вот в чём проблема! Это не примитивный тип данных, а ссылочный. Ссылочные типы нельзя сравнивать через ==, потому что будут сравниваться ссылки объектов, а не они сами. Но для Integer в Java есть нюанс: Integer может кешироваться до 127, и если мы вводим по единице в оба поля числа до 127, то фактически сравниваем просто int. А если вводим больше, то получаем два разных объекта. Адреса у объектов не совпадают, а именно так Java сравнивает их.

Есть два решения проблемы:

  1. Изменить тип Integer на примитив int.
  2. Сравнивать как объекты.

    Не рекомендуется менять тип этих полей в реальном приложении: числа могут приходить извне, и тип лучше оставлять прежним. Изменим то, как мы сравниваем числа:

if (firstInt.equals(secondInt)) {
  answer.setText("Равно");
} else {
  answer.setText("Не равно");
}

Проверяем:

Всё работает. Наконец-то! Хотя… Давайте посмотрим, что будет, если пользователь ничего не введёт, но нажмёт на кнопку? Приложение опять упало… Смотрим в логи:

Опять NumberFormatException, при этом строка пустая. Давайте поставим точку останова на 26-й строке и заглянем с помощью отладчика глубже.

Нажмём F8 — и перейдём в глубины операционной системы:

    Интересно! Давайте обернём код в try/catch и посмотрим ошибке в лицо. Если что, поправим приложение. Выделяем код внутри метода onClick() и нажимаем Ctrl+Alt+T:

Выбираем try / catch, среда разработки сама допишет код. Поставим точку останова. Получим:

Запускаем приложение и ловим ошибку:

Действительно, как и в логах, — NumberFormatException. Метод parseInt выбрасывает исключение, если в него передать пустую строку. Как обрабатывать такую проблему — решать исключительно вам. Два самых простых способа:

  1. Проверять получаемые строки first.getText().toString() и second.getText().toString() на пустые значения. И если хоть одно значение пустое — говорить об этом пользователю и не вызывать метод parseInt.
  2. Или использовать уже готовую конструкцию try / catch:

Теперь-то точно всё в порядке! Хотя профессиональным тестировщикам это приложение никто не отдавал: поищете ещё ошибки? :)

Понравилась статья? Поделить с друзьями:
  • Как посмотреть критические ошибки виндовс
  • Как посмотреть критические ошибки windows 10
  • Как посмотреть коды ошибок на шевроле круз
  • Как посмотреть коды ошибок на калине
  • Как посмотреть коды ошибок лада веста