Где произошла ошибка

Как найти место в коде где возникла ошибка?

У меня при нажатии на кнопку крашит активити и появляются ошибки в logcat:

2022-04-09 17:25:44.566 21747-21747/? E/u.homebuy.neit: Unknown bits set in runtime_flags: 0x8000
2022-04-09 17:25:45.262 21747-21786/ru.homebuy.neit E/Perf: Fail to get file list ru.homebuy.neito
2022-04-09 17:25:45.262 21747-21786/ru.homebuy.neit E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array

Как найти эти ошибки в коде?


  • Вопрос задан

  • 271 просмотр

1) Открываете Logcat в Android Studio
2) запускаете программу
3) выполняете действия в программе приводящие к ошибке

Пригласить эксперта

У вас ведь написано в логах: Attempt to get length of null array, попытка получить размер нулевого массива. По идее дальше в логах должна быть указана строка, но и так понятно что вы где-то неправильно с массивом работаете.


  • Показать ещё
    Загружается…

21 сент. 2023, в 22:51

450 руб./за проект

21 сент. 2023, в 22:23

5000 руб./за проект

21 сент. 2023, в 20:54

10000 руб./за проект

Минуточку внимания

16 / 16 / 3

Регистрация: 24.05.2014

Сообщений: 1,018

1

Как узнать где произошла ошибка в МОЁМ коде при возникновении

01.11.2019, 17:31. Показов 3068. Ответов 9


Студворк — интернет-сервис помощи студентам

Всегда если появляется такая ошибка, то она указывает на строку в библиотеке (функции, в которой произошла ошибка), и хотя можно понять, из-за чего она возникла, совершенно непонятно где она возникла.
Как узнать, в какой строке моего кода произошло что-то вызвавшее ошибку?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

01.11.2019, 17:31

9

Почетный модератор

7390 / 2636 / 281

Регистрация: 29.07.2006

Сообщений: 13,696

01.11.2019, 18:02

2

Посмотреть в call stack.



0



16 / 16 / 3

Регистрация: 24.05.2014

Сообщений: 1,018

01.11.2019, 18:18

 [ТС]

3

Vourhey, где это?



0



Почетный модератор

7390 / 2636 / 281

Регистрация: 29.07.2006

Сообщений: 13,696

01.11.2019, 18:28

4



0



16 / 16 / 3

Регистрация: 24.05.2014

Сообщений: 1,018

01.11.2019, 18:47

 [ТС]

5

Vourhey
Этот call stack можно включить в окне вида?:

Как узнать где произошла ошибка в МОЁМ коде при возникновении

Как call stack называется на русском?



0



473 / 425 / 290

Регистрация: 10.03.2015

Сообщений: 1,782

01.11.2019, 18:59

6

Цитата
Сообщение от Титан_1
Посмотреть сообщение

Как узнать, в какой строке моего кода произошло что-то вызвавшее ошибку?

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



0



Мозгоправ

1741 / 1035 / 468

Регистрация: 01.10.2018

Сообщений: 2,138

Записей в блоге: 2

01.11.2019, 20:55

7

Цитата
Сообщение от Титан_1
Посмотреть сообщение

Как call stack называется на русском?

Хз. Попробуй Alt+7.
Меню Debug / Windows / Call Stack (при запущенном сеансе отладки).



0



16 / 16 / 3

Регистрация: 24.05.2014

Сообщений: 1,018

11.11.2019, 09:30

 [ТС]

8

L0M, при alt+7 ничего не происходит. В Меню → Отладка → Окна есть стек вызовов, но окно пустое



0



18159 / 9492 / 2322

Регистрация: 30.01.2014

Сообщений: 16,596

11.11.2019, 09:44

9

Титан_1, ну так вам надо сначала запустить программу в режиме отладки, дождаться пока произойдет ошибка, а затем уже смотреть call stack.



0



16 / 16 / 3

Регистрация: 24.05.2014

Сообщений: 1,018

11.11.2019, 09:59

 [ТС]

10

DrOffset, я так и делаю



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.11.2019, 09:59

10

Блоги, форумы, посадочные страницы и другие интернет-ресурсы представляют собой совокупность графического, текстового, аудио- и видео-контента, размещенного на веб-страницах в виде кода. Чтобы обеспечить к ним доступ пользователей через интернет, файлы размещают на серверах. Это аппаратное обеспечение (персональный компьютер или рабочая станция), на жестком диске которого и хранится код. Ключевые функции выполняются без участия человека, что актуально для всех типов оборудования, включая виртуальный выделенный сервер. Но это не означает, что контроль не осуществляется. Большинство событий, которые происходят при участии оборудования, пользователей и софта, включая ошибки, логи сервера фиксируют и сохраняют. Из этой статьи вы узнаете, что они собой представляют, зачем нужны, и как их читать.

Как читать логи с ошибками сервера

Что такое логи

Это текстовые файлы, которые хранятся на жестком диске сервера. Создаются и заполняются в автоматическом режиме, в хронологическом порядке. В них записываются:

  • системная информация о переданных пользователю данных;
  • сообщения о сбоях и ошибках;
  • протоколирующие данные о посетителях платформы.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Классификация логов

Для каждой разновидности софта предусмотрены соответствующие файлы. Все логи сервера могут храниться на одном диске или даже на отдельном сервере. Существует довольно много разновидностей логов, вот наиболее распространенные:

  • доступа (access_log) — записывают IP-адрес, время запроса, другую информацию о пользователях;
  • ошибок (error_log) — показывают файлы, в которых выявлены ошибки и классифицируют сбои;
  • FTP-авторизаций — отображают данные о попытках входа по FTP-соединению;
  • загрузки системы — с его помощью выполняется отладка при появлении проблем, в файл записываются основные системные события, включая сбои;
  • основной — содержит информацию о действиях с файерволом, DNS-сервером, ядром системы, FTP-сервисом;
  • планировщика задач — в нем выполняется протоколирование задач, отображаются ошибки при запуске cron;
  • баз данных — хранит подробности о запросах, сбоях, ошибки в логах сервера отображаются наравне с другой важной информацией;
  • хостинговой панели — включает статистику использования ресурсов сервера, время и количество входов в панель, обновление лицензии;
  • веб-сервера — содержит информацию о возникавших ошибках, обращениях;
  • почтового сервера — в нем ведутся записи о входящих и исходящих сообщениях, отклонениях писем.

Записи в системные журналы выполняет установленный софт.

Классификация логов

Зачем нужны логи

Анализ логов сервера — неотъемлемая часть работы системного администратора или веб-разработчика. Обрабатывая их, специалисты получают массу полезных сведений. Используются в следующих целях:

  • поиск ошибок и сбоев в работе системы;
  • выявление вредоносной активности;
  • сбор статистики посещения веб-ресурса.

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

Читайте также

Настройка Iptables для чайников

Как установить и настроить NTP на сервере

Где посмотреть логи

Расположение определяется хостинг-провайдером или настройками установленного софта. На виртуальном хостинге доступ к лог-файлам предоставляется из панели управления хостингом. Если администратор не открыл его для владельца сайта, получить информацию не получится. Но большинство провайдеров разрешают свободно пользоваться журналами и проводить анализ логов сервера. Независимо от разновидности сервера лог-файлы хранятся в текстовом документе. По умолчанию он называется access.log, но настройки позволяют переименовать файл. Это актуально для Nginx, Apache, прокси-разновидностей squid, других типов. Для просмотра их надо скачать и открыть в текстовом редакторе. В качестве альтернативы можно использовать Grep и схожие утилиты. Они позволяют открыть и отфильтровать логи прямо на сервере.

VDS Timeweb арендовать

Как читать логи. Пример

Существует довольно много форматов записи, combined — один из наиболее распространенных. В нем строчка кода может выглядеть так:

%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\»

Директивы имеют следующее значение:

  • %h — IP-адрес, с которого был сделан запрос;
  • %l — длинное имя удаленного хоста;
  • %u — удаленный пользователь, если запрос был сделан аутентифицированным юзером;
  • %t — время запроса к серверу и его часовой пояс;
  • %r — тип и содержимое запроса;
  • %s — код состояния HTTP;
  • %b — количество байт информации, отданных сервером;
  • %{Referer} — URL-источник запроса;
  • %{User-Agent} — HTTP-заголовок.

Еще один пример чтения логов можно посмотреть в статье «Как читать логи сервера».

Опытные веб-мастера для сбора и чтения лог-файлов используют программы-анализаторы. Они позволяют читать логи сервера без значительных временных затрат. Вот некоторые из наиболее востребованных:

  • Analog. Один из самых популярных анализаторов, что во многом объясняется высокой скоростью обработки данных и экономным расходованием системных ресурсов. Хорошо справляется с объемными записями, совместим с любыми ОС.
  • Weblog Expert. Программа доступна в трех вариациях: Lite (бесплатная версия), Professional и Standard (платные релизы). Версии отличаются функциональными возможностями, но каждая позволяет анализировать лог-файлы и создает отчеты в PDF и HTML.
  • SpyLOG Flexolyzer. Простой аналитический инструмент, позволяющий получать отчеты с высокой степенью детализации. Интегрируется c системой статистики SpyLOG, позволяет решать задачи любой сложности.

Логи сервера с ошибками error.log

Это журнал с информацией об ошибках на сайте. В нем можно посмотреть, какие страницы отсутствуют, откуда пришел пользователь с конкретным запросом, имеются ли «битые» ссылки, другие недочеты, включая те, которые не удалось классифицировать. Используется для выявления багов и погрешностей в коде.

Каждая ошибка в логе сервера error.log отображается с новой строки. Идентифицировав и устранив ее, программист сможет наладить работу сайта. Используя журнал, можно выявить и слабые места веб-платформы. Это простой и удобный инструмент анализа, которым должен уметь пользоваться каждый веб-мастер, системный администратор и программист.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Узнать где произошла ошибка по имеющемуся адресу

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Junior

      *

      Рейтинг (т): нет

      Здравствуйте.
      Не знал в какой раздел запостить этот топик, но так или иначе.
      Пишу оболочки на Делфи, и переодически некоторые dll-ки пишу на С++ (посредством Visual Studio), которые в последствии к этой оболочке подключаю. Бывает, в этих dll’ках происходят ошибки, а-ля Access Violation at address 05B47A7 in module ‘blabla.dll’. Вопрос: как узнать в каком месте в dll’ke произошла ошибка зная адрес(05B47A7) ошибки?

      Сообщение отредактировано: IDontBelieveInSilence


      CodeMonkey



      Сообщ.
      #2

      ,

        Пока висит окно — ставьте программу на паузу (вы ведь запускали под отладчиком?), потом Search/Go to address, вводите $05B47A7.


        IDontBelieveInSilence



        Сообщ.
        #3

        ,

          Junior

          *

          Рейтинг (т): нет

          >Пока висит окно — ставьте программу на паузу (вы ведь запускали под отладчиком?), потом Search/Go to address, вводите $05B47A7.
          Нет, речь идет о баграпортах которые приходят от пользователей. Например, вот, прислали мне скриншот, мол A/V по адресу хххххх в blabla.dll.
          И вот, как мне узнать где именно там произошла ошибка, имея на руках только адрес?

          Guru

          Rouse_



          Сообщ.
          #4

          ,

            Moderator

            *******

            Рейтинг (т): 320

            Обычно достаточно расрутить стек SEH фреймов. Достаточно грамотный пример идет в составе JEDY библиотеки, там как раз помимо этого показано как работать с линкуемой отладочной информацией и MAP файлом.

            Guru

            Romtek



            Сообщ.
            #5

            ,

              пропагандист

              *******

              Рейтинг (т): 188

              Адрес ошибки имеет значение только на машине клиента. Так что эта информация, на мой взгляд, пользы не несёт.

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


              northener



              Сообщ.
              #6

              ,

                Цитата IDontBelieveInSilence @

                Нет, речь идет о баграпортах которые приходят от пользователей.

                Рекомендую http://www.eurekalog.com/index_delphi.php


                CodeMonkey



                Сообщ.
                #7

                ,

                  Цитата IDontBelieveInSilence @

                  И вот, как мне узнать где именно там произошла ошибка, имея на руках только адрес?

                  Никак. Чтобы это узнать, нужно знать актуальный базовый адрес blabla.dll на машине клиента в момент ошибки.

                  Например, адрес ошибки — $05B47A7. blabla.dll была загружена по $0500000. Значит, смещение инструкции кода, вызывавшей ошибку, от начала DLL: $05B47A7 — $0500000 = $B47A7.

                  Вы запустили программу у себя, поставили на паузу. На вашей машине blabla.dll имеет базовый адрес $0610000. Тогда вас интересует адрес $0610000 + $B47A7 = $06C47A7.

                  К таким ситуациям нужно себя готовить заранее. EurekaLog, madExcept, JCL (JclDebug + JclHookExcept).


                  IDontBelieveInSilence



                  Сообщ.
                  #8

                  ,

                    Junior

                    *

                    Рейтинг (т): нет

                    >К таким ситуациям нужно себя готовить заранее. EurekaLog, madExcept, JCL (JclDebug + JclHookExcept).
                    В том то и дело, что в случае с Делфи-оболочкой всё решено именно так — у меня интегрирован EurekaLog, но как быть с dll’ками, которые у меня написаны на С++ в Visual Studio 2008? Есть ли для Visual Studio аналог EurekaLog?


                    northener



                    Сообщ.
                    #9

                    ,

                      Цитата IDontBelieveInSilence @

                      >К таким ситуациям нужно себя готовить заранее. EurekaLog, madExcept, JCL (JclDebug + JclHookExcept).
                      В том то и дело, что в случае с Делфи-оболочкой всё решено именно так — у меня интегрирован EurekaLog, но как быть с dll’ками, которые у меня написаны на С++ в Visual Studio 2008? Есть ли для Visual Studio аналог EurekaLog?

                      Тогда не понятно почему вы задаёте свой вопрос именно тут?
                      Мы никогда не отвечали за мелкомягких.
                      P.S. У них есть свои решения, но это уже не сюда.


                      CodeMonkey



                      Сообщ.
                      #10

                      ,

                        Ответ на этот вопрос зависит от того, кто обрабатывает исключение в DLL.

                        Если исключение передаётся вам — его должна поймать EurekaLog. Понятно, что вразумительное сообщение об ошибке при этом будет далеко не всегда. Но у вас будет хотя бы стек вызовов. Только вот сам стек вызовов будет нечитабелен — ведь в DLL, написанной на C++, нет никакой отладочной информации в любом «формате Borland» (map, TD и т.п.).

                        Как правило, передавать исключения через границы модулей — плохая идея. Потому что обычно в языке исключение представлено объектом. Программа Delphi не знает, как обращаться с объектами C++, как их читать, как их освобождать (после обработки исключения). Поэтому, DLL обязана обрабатывать все исключения внутри себя, передавая во вне только индикацию ошибки.

                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                        0 пользователей:

                        • Предыдущая тема
                        • Delphi: Общие вопросы
                        • Следующая тема

                        Рейтинг@Mail.ru

                        [ Script execution time: 0,0715 ]   [ 16 queries used ]   [ Generated: 21.09.23, 21:35 GMT ]  

                        Самое главное приложение на любом Android-смартфоне — это Google Play. Именно с его помощью устанавливаются все новые мобильные приложения, на него завязана работа сервисов Google, да и немалое число функций самого смартфона. Но, как и любое приложение, Google Play не застраховано от сбоев. И время от времени вы можете столкнуться с тем, что в приложении Google Play произошла ошибка.

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

                        1 Убедитесь, что ошибка на вашей стороне

                        В первую очередь, стоит убедиться в том, что ошибка возникает не из-за какого-то глобального сбоя сервисов Google. Для этого просто запустите Google Play маркет на другом смартфоне, или попросите это сделать своих друзей. Ошибка возникает и у них? В таком случае просто наберитесь терпения и подождите, пока специалисты Google устранят сбой.

                        Если же Google Play некорректно работает только на вашем смартфоне, стоит перейти к следующему пункту статьи.

                        2 Проверьте дату и время

                        Неожиданно, правда? Тем не менее, именно неверные дата и время могут стать причиной появления ошибки гугл на андроид. Чтобы устранить эту ошибку, достаточно вручную установить актуальные дату и время или включить функцию автоопределения времени в меню настроек. В некоторых случаях она может называться «Дата и время сети». После включения опции убедитесь, что смартфон перешел на правильное время.

                        3 Перезагрузите смартфон

                        Что в первую очередь говорят сотрудники службы поддержки, когда вы обращаетесь к ним с жалобой на сбой в работе компьютера? Правильно, они советуют перезагрузить ПК, после чего большинство проблем исчезает как по мановению волшебной палочки. Собственно, в этом смысле смартфон недалеко ушел от полноценного компьютера, и такой способ «исправления» ошибки может быть самым эффективным.

                        4 Перезапустите Google Play

                        Этот способ во многом повторяет наш предыдущий совет, только на сей раз вам не обязательно перезагружать сам смартфон. Достаточно просто перезагрузить приложение Google Play. Для этого найдите Google Play в списке установленных на смартфон приложений, зайдите в его настройки и нажмите кнопку «Остановить». После этого запустите приложение заново и проверьте, ушла ли проблема.

                        5 Очистите кэш сервисов Google Play

                        В некоторых случаях ошибку гугл аккаунта можно решить очисткой кэша сервисов Google Play. Для этого найдите приложение уже описанным нами способом, зайдите в его настройки и найдите там пункт «Память». Кликните по нему и нажмите кнопку «Очистить кэш». Обычно она находится внизу экрана.

                        6 Удалите обновления Google Play

                        Ошибка Google Play обычно возникает не просто так, часто она появляется после установки очередного обновления приложения. Обновление может неправильно «встать» на смартфон, а может быть глючным и само по себе. Поэтому если вы перепробовали уже все, о чем мы писали раньше, самое время избавиться от недавно установленных обновлений Google Play.

                        Для этого снова найдите проблемное приложение в смартфоне, зайдите в его настройки и нажмите на иконку с тремя точками в правом верхнем углу окна, после чего тапните на появившуюся надпись «Удалить обновления».

                        7 Обновите Google Play

                        Приложение Google Play можно обновить несколькими способами. Самый простой из них плавно вытекает из предыдущего пункта. Просто удалите обновления приложения по инструкции, описанной в нем. После этого запустите магазин приложений Google, и приложение само предложит обновиться до актуальной версии.

                        Второй способ подойдет тем, кто привык все делать сам и не доверяет автоматической установке. Здесь понадобится скачать APK-файл Google Play и запустить его с помощью любого файлового менеджера. Преимущество такого способа в том, что вы можете сами выбрать, какую версию программы установить на смартфон.

                        8 Включите режим полета

                        Этот способ особенно эффективен, если приложение зависло в процессе установки какой-то программы. Ошибка Google произошла, как исправить ее? Просто переключите смартфон в режим полета (авиарежим), подождите несколько минут и верните его в исходное состояние. Тем самым вы фактически перезапустите сетевое подключение.

                        9 Перезапустите Wi-Fi

                        Это еще один близкий «родственник» последнему способу решения проблемы. Попробуйте выключить доступ к Wi-Fi, а затем снова включите его. Если доступа в интернет нет, перезагрузите домашний роутер или дождитесь его перезагрузки — бывает так, что при «передергивании» Wi-Fi роутер самостоятельно уходит в ребут. Кроме того, проверьте нормально ли работает доступ в интернет через сеть оператора сотовой связи.

                        10 Удаление аккаунта Google

                        Если при загрузке Google Play произошла ошибка, а ни один из описанных нами способов не работает, попробуйте еще один достаточно кардинальный метод решения проблемы — удаление аккаунта Google со смартфона.

                        Для этого найдите в меню настроек смартфона пункт «Аккаунты» или «Управление учетными записями». Перейдите в него и нажмите удалить аккаунт с устройства.

                        Важно! Этот пункт стоит выполнять, только если вы помните данные для входа в ваш аккаунт Google.

                        После этого запустите Google Play, и смартфон сам попросит вас ввести данные аккаунта Google для авторизации.

                        Итоги

                        Ошибка google, что делать для ее устранения? В этой статье описано несколько действенных способов решения проблемы. Ни один из них не требует получения рут-прав или каких-то специфичных знаний.

                        Но, повторимся, самым действенным способом исправления ошибки Google Play остается банальная перезагрузка смартфона, которая помогает в подавляющем большинстве случаев. Многие другие описанные в статье способы, по сути, призваны выполнить локальную перезагрузку самого приложения или сетевого подключения, а все это автоматически происходит при перезагрузке смартфона.

                        Читайте также

                        • Ошибка 0xc0000005 при запуске игры или приложения: как ее исправить
                        • Ошибка обновления 80072efe: как ее исправить
                        • Не приходят уведомления на часы: как решить проблему

                        Дмитрий Мухарев

                        Редактор направлений «Компьютерное железо» и «Технологии»

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