Распишу по шагам, как работать с AIX-вским dbx. Обычный линуксовый gdb имеет свои особенности, dbx как-то поудобнее даже.
Итак - откомпиляли все сорсы (foo.c, stupid.c) с ключом -g. Получили бинарник (stupid).
1. Теперь запускаем dbx, грузим наш бинарник в него:
dbx stupid
Если хотим, чтоб отладчик искал сорсы в директории ./src, пишем:
dbx -I ./src stupid
2. Перед запуском отлаживаемой программы можно поставить брейкпоинты и задать способ трассировки (т.е., когда нужно будет выводить строки выполняемого кода).
поставить брякпоинт в файле foo.c на строке 9:
stop at "foo.c" : 9
[Набирать строчку надо без исправлений, без BackSpace, иначе отладчик говорит об ошибках синтаксиса]
поставить брякпоинт на функции foo:
stop in foo
(брякнется на первом выполняемом выражении).
Теперь трассировка:
- Трассировать каждый вызов printf :
trace printf
- Трассировать каждое выполнение строки 22 в hello.c :
trace "hello.c":22
- Трассировать изменение переменной x в процедуре main :
trace x in main
- Трассировать данные по адресу 0x2004000:
set $A=0x2004000
trace $A
если программе нужны флаги (например, -da), пишем r -da
4. После остановки на брякпоинте:
можно вывести значение одной переменной: print x
или всех переменных, которые видны из данного куска кода (текущей процедуры):
dump.
Кроме того, можно вывести стек вызова процедур: where.
5. Выход из программы - quit
Комментариев нет:
Отправить комментарий