Как вы изучаете основные файлы в dbx?

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

Спасибо!

2 ответа

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

Как только ваше ядро ​​запустится в dbx:

  1. 'где' - показать стек
  2. "вверх" или "вниз" - для перемещения по кадрам, а затем вы
  3. 'print var' - отображать переменные
  4. и 'list' или 'edit' - отобразит информацию о файле в этом текущем месте

Глядя здесь под "Изучение данных" выручил меня.

Основные файлы создаются в текущем рабочем каталоге процесса. Проверить с getcwd()установить с chdir().

dbx [-a ProcessID] [-B DebugFile] [-c CommandFile] [-I Каталог] [ -E DebugEnvironment ] [ -p oldpath=newpath:...| путь к файлу] [ -u ] [ -F ] [ -r ] [ -x ] [ -v ] [ -C CoreFile | ObjectFile [ CoreFile ] ]

Загрузите вашу программу в DBX с dbx /path/to/progname /path/to/corefile и вы можете начать просматривать трассировку стека (команда "где" и т. д.).

Если вы не укажете corefile dbx автоматически загрузит соответствующий файл с именем "core", если он находится в том же каталоге, что и загруженная программа (и они соответствуют сигнатурам).

Прочтите справочную страницу на dbx, она содержит все необходимые вам команды отладки.

Также обратите внимание, что ваша программа должна была быть скомпилирована с включенными символами отладки (а не позднее 'strip'ed), чтобы трассировка стека была наиболее полезной. Без отладочных символов вы увидите имена функций в трассировке стека, но не более того.

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