Как вы изучаете основные файлы в dbx?
Я работаю над AIX и имею процесс, который продолжает падать. Я никогда не проверял основные файлы и хотел бы получить некоторые рекомендации, если это возможно. Я использую DBX. Как я могу (а) убедиться, что файл ядра идет туда, куда я хочу, и (б) увидеть состояние процесса до его сбоя?
Спасибо!
2 ответа
Я делаю хорошо, проходя через пробежку, но также не уверен в отладке ядра. Я обнаружил, что эти команды, вероятно, те, на которых нужно сосредоточиться. Есть, вероятно, больше.
Как только ваше ядро запустится в dbx:
- 'где' - показать стек
- "вверх" или "вниз" - для перемещения по кадрам, а затем вы
- 'print var' - отображать переменные
- и '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), чтобы трассировка стека была наиболее полезной. Без отладочных символов вы увидите имена функций в трассировке стека, но не более того.