Как обеспечить след?

gnome-shell кажется, отказывает с сомнительными результатами, и разработчики попросили, чтобы я обеспечил след, что такое точно след и как я получаю их, в чем они нуждаются? Я выполняю Ubuntu GNOME 16.04 с GNOME 3.20.

4
задан 3 June 2016 в 10:41

2 ответа

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


Подготовка

  1. Для подготовки системы к тому, что она сделала один, необходимо сначала удостовериться это apport выключен, поскольку это обычно заменяет gdb. Чтобы сделать, это просто изменяет строку enabled=1 кому: enabled=0 в /etc/default/apport файл (после выполнения с получением следа вручную, необходимо повторно включить по левую сторону судна путем обращения изменений в файл), затем перезапустите машину.

  2. Теперь необходимо удостовериться, что соответствующие dubug символы установлены, чтобы сделать, это для большинства пакетов просто добавляет -dbg в конце, например, с gnome-shell просто выполните следующее для установки их:

    sudo apt-get install gnome-shell-dbg
    

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

  3. Теперь необходимо удостовериться, что Вы имеете gdb установленный:

    sudo apt-get install gdb
    

Тип 1 поколения (приложение, бывшее должное быть запущенным)

  1. Запустите приложение под управлением gdb в Терминале (если приложение требует, чтобы быть выполненным как, корень затем использует sudo перед gdb команда):

    gdb <application> 2>&1 | tee ~/gdb-<application>.txt
    
  2. Затем введите следующие строки после каждого, который необходимо нажать ENTER (после того, как run можно ввести любые аргументы, необходимые, который необходимо выполнить с приложением):

    handle SIG33 pass nostop noprint
    set pagination 0
    run
    

Теперь посмотрите Заключительный раздел шагов.


Тип 2 поколения (приложение, не в настоящее время работающее)

  1. Найдите PID приложения:

    pidof <application>
    
  2. Запустить gdb в Терминале (если приложение требует, чтобы быть выполненным как, корень затем использует sudo перед gdb команда):

    gdb 2>&1 | tee gdb-<application>.txt
    
  3. Выполните следующее, как ранее проинструктировано (нажимающий ENTER после каждой строки):

    handle SIG33 pass nostop noprint
    set pagination 0
    attach <PID>
    continue
    

Теперь посмотрите Заключительный раздел шагов.


Тип 3 поколения (след от дампа ядра)

  1. Загрузите дамп ядра в gdb:

    gdb -c <coreDump> 2>&1 | tee gdb-<program>.txt
    

Заключительные шаги

Если Вы использовали тип 1 или 2 поколения, то можно теперь сделать то, что Вы должны с приложением воспроизвести ошибку, о которой Вы сообщаете. После окончания если программа не отказывает, нажмите CTRL + C и затем выполните следующие строки как с обеспеченным предыдущим (если программа разрушает Вас, все еще должен выполнить следующие строки для получения следа):

backtrace full
info registers
x/16i $pc
thread apply all backtrace
Quit

Вы теперь имеете свой след, присоединяете его к Вашему отчету об ошибках ( ~/gdb-<application>.txt файл).


Источник: Ubuntu Wiki: след

3
ответ дан 1 December 2019 в 09:33

Я не использую оболочку гнома, таким образом, я - вид предположения, но следующее является истинным isn csh, ударом и ударом.

Установите ulimit -c 5000. Это позволит дамп ядра. Число установило максимальный размер дампа. Вам, возможно, придется варьироваться число так, чтобы команда работала. Если окно оболочки гнома закрывается, ulimit команда MUST повторно введены.

Ubuntu должна действительно включить эту функцию ранних дистрибутивов LTS и машин разработки.

Теперь выполненный gnome-shell и вызовите дамп. В текущем каталоге теперь должен быть базовый файл.

Выполненный gdb $(which gnome-shell) core. Должно быть некоторое отслеживание стека, которое обнаруживается. Отправьте им отслеживание стека. Если оболочка гнома была скомпилирована с отладкой -g могли бы быть числа оператора и вызовы функций в traceback.

2
ответ дан 1 December 2019 в 09:33

Другие вопросы по тегам:

Похожие вопросы: