Как вы изучаете основные файлы в dbx? - PullRequest
2 голосов
/ 11 февраля 2011

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

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

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

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

Поиск здесь в разделе «Изучение данных» помог мне.

3 голосов
/ 12 февраля 2011

основные файлы создаются в текущем рабочем каталоге процесса.Проверьте с помощью 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) для стекатрассировка будет самой полезной.Без символов отладки вы увидите имена функций в трассировке стека, но не более того.

...