Отладочная информация

From The Document Foundation Wiki
Jump to: navigation, search

Эта страница описывает Debug Information, которую вы можете послать разработчикам когда отправляете отчет об ошибке.

Это продвинутая штука

Пожалуйста, не чувствуйте себя обязанными предоставлять эту информацию, если вы не:

  • Разработчик/программист и представляете что этот материал значит;
  • Разработчик или кто из команды QA недвусмысленно попросил вас предоставить эту информацию;
  • Вы один из членов команды QA.

Отладочная информация в операционных системах

Эти инструкции достаточно конкретны для каждой операционной системы. Поэтому они сведены в разделы на этой странице по ним .

GNU/Linux

Для того, чтобы получить журналы отладки, вы должны сначала установить пакеты с отладочными символами. Пакет с отладочными символами для Debian, Ubuntu или основанных на них дистрибутивов обычно называется libreoffice-dbg. В других дистрибутивах это libreoffice*-debuginfo. Помните, что эти пакеты могут потребовать более 2,5 Гб свободного места для установки.

GNU/Linux: Как получить журнал обратной трассировки

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

  1. запустите эмулятор терминала;
  2. запустите LibreOffice: soffice --backtrace;
  3. повторите ошибку приводящую к зависанию или аварийному завершению. Если это зависание, вам необходимо заставить программу аварийно закрыться, для этого откройте другую консоль и введите pkill -15 soffice.bin или, как альтернатива, введите xkill и щёлкните по зависшему окну LibreOffice;
  4. В той же директории, откуда вы запустили LibreOffice, будет создан файл gdbtrace.log;
  5. архивируйте этот файл в .tar.gz и прикрепите к отчету об ошибке.

GNU/Linux: Как получить журнал strace

strace отслеживает системные вызовы, которые делает процесс. Если есть некоторые проблемы связанные с файловым вводом/выводом, strace может быть отличным способом обнаружить именно то, что происходит на уровне операционной системы. Это также быстрый способ увидеть задачи, которые продолжают выполняться и/или зависли, и находить информацию о системе, на которой выполняется LibreOffice.

  1. запустите терминал;
  2. выполните команду soffice --strace;
  3. воспроизведите проблему;
  4. архивируйте файл журнала в strace.log.tar.gz и прикрепите к отчету об ошибке
  5. и прикрепите к отчету об ошибке.

GNU/Linux: Как получить журнал Valgrind

Журнал Valgrind имеет неоценимое значение для отслеживания непонятных ошибок повреждения памяти, которые чрезвычайно трудно найти другими методами. Это достигается путем эмуляции процессора. Небольшой недостаток этого способа является то, что код работает примерно в восемьдесят (80x) раз медленнее, и для вас это будет заметно. Плюсом является то, что он показывает нам проблемы, которые не доступны для поиска в любой другой форме. Сделанный трек очень часто показывает проблему таким образом, что её довольно легко исправить разработчику: ваше терпение ценится. Valgrind может давать ложные срабатывания.

  1. установите пакет valgrind;
  2. запустите терминал;
  3. soffice --valgrind >& /tmp/valgrind.log;
  4. будьте терпеливы... воспроизведите проблему;
  5. архивируйте и прикрепите valgrind.log к отчету об ошибке.

Если вы хотите передать Valgrind дополнительные параметры, можете воспользоваться переменной окружения VALGRIND_OPTS.

GNU/Linux: Как получить журнал кэш-памяти процессора

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

  1. установите пакет valgrind
  2. запустите терминал
  3. unset MALLOC_CHECK_
  4. unset MALLOC_PERTURB_
  5. unset G_SLICE # эти три шага дают нам низкую производительность из-за необычных распределений памяти
  6. export SAL_DISABLE_FLOATGRAB=1 # if we wedge at least we don't do it while grabbing the mouse
  7. export OOO_DISABLE_RECOVERY=1 # turns off recovery dialog which can be a pain
  8. valgrind --tool=callgrind --simulate-cache=yes --dump-instr=yes ./soffice.bin --splash-pipe=0

Это будет работать примерно в 150 раз медленнее, чем нормальный запуск. Если вы хотите прекратить выполнение при помощи комбинации Ctrl+C из консоли, нажмите только один раз. На выходе вы получите большой файл, который будет называться callgrind.out.12345 (где 12345 - это PID процесса). Архивируйте этот файл и загрузите куда-нибудь для разработчиков. Или, если вы интересуетесь необычными картинками, загрузите его в Kcachegrind и наслаждайтесь. :)

Windows

Windows: Как сделать обратную трассировку

Если у вас установлен LibreOffice 4.2.0 или более новая версия, вы можете использовать отладочные утилиты разработчика. Существует сервер тестовых символов, содержащий соответствующие отладочные символы. Установка отладочного окружения описана в статье Как получить обратную трассировку с WinDbg. Также есть видео помогающее пронять этот процесс.

Mac OSX

Mac OSX: Как получить отладочную информацию

Отладочная информация полезна для анализа причины, почему приложение аварийно завершает работу или зависает. На Mac OS X можно получить отладочную информацию очень просто, без установки дополнительного программного обеспечения. Эта информация включает простую трассировку стека, которая пропускает полные символы, но всё равно может быть очень полезна.

Точные действия зависят от вашей версии Mac OS X и установки, но в общем вы сможете получить отладочную информацию следующим образом:

  • Когда какое-либо приложение аварийно завершает работу, Mac OS X вызывает диалоговое окно с надписью LibreOffice quit unexpectedly и спрашивает, хотите ли вы отправить отчет Apple. Нажмите на кнопку с надписью Report…. После этого откроется большое окно с заголовком Problem Report for LibreOffice. Под полем Problem Details and System Configuration, вы найдёте поле для редактирования с большим текстом, содержащем много технических деталей. Вы можете просто поставить курсор в это поле, нажать ⌘ Cmd+a для выделения всего текста, затем ⌘ Cmd+c для копирования его в буфер обмена и вставить его в документ текстового редактора (например, Apple’s TextEdit). Затем сохраните текст в файле (используйте формат обычного текста .txt). После этого у вас будет файл, который следует прикрепить к отчету об ошибке на Bugzilla. И вам нет необходимости отправлять отчет об ошибке в компанию Apple, так что нажмите Don’t Send в окне Problem Report for LibreOffice.
  • Если приложение зависло, вы можете заставить его завершить работу, нажав ⌘ Cmd+Alt+Esc. Mac OS X вызовет диалоговое окно с заголовком Force Quit Applications, спрашивающее, какое из приложений вы намерены закрыть. Зависшее приложение в этом списке имеет пометку не отвечает. Выделите его и нажмите на кнопку Force quit. В зависимости от конфигурации системы, вам может быть предложено отправить отчет об ошибке в компанию Apple. Если вы подтвердите, то получите то же самое окно Problem Report for LibreOffice, как было описано выше, и можете копировать и сохранить отладочную информацию в текстовый файл.

Примечание: В зависимости от конфигурации системы и настроек пользователя, вы можете не получить запроса на отправку отчета в Apple. Вы, возможно, должны быть зарегистрированы в качестве пользователя с правами администратора, чтобы увидеть эти диалоги.