Чтение онлайн

на главную - закладки

Жанры

Linux программирование в примерах
Шрифт:

1062078174: 1: heap: 0x804a000 to 0x804d000, size 12288 bytes (3 blocks)

1062078174: 1: heap checked 0

1062078174: 1: alloc calls: malloc 1, calloc 0, realloc 0, free 0

1062078174: 1: alloc calls: recalloc 0, memalign 0, valloc 0

1062078174: 1: total memory allocated: 30 bytes (1 pnts)

1062078174: 1: max in use at one time: 30 bytes (1 pnts)

1062078174: 1: max alloced with 1 call: 30 bytes

1062078174: 1: max alloc rounding loss: 34 bytes (53%)

1062078174: 1: max memory space wasted: 3998 bytes (98%)

1062078174: 1: final user memory space: basic 0, divided 1, 4062 bytes

1062078174: 1: final admin overhead: basic 1, divided 1, 8192 bytes (66%)

1062078174: 1: final external space: 0 bytes (0 blocks)

1062078174: 1: top 10 allocations:

1062078174: 1: total-size count in-use-size count source

1062078174: 1: 30 1 30 1 ra=0x8048412

1062078174: 1: 30 1 30 1 Total of 1

1062078174: 1: dumping not-freed pointers changed since 0:

1062078174: 1: not freed: '0x804c008|s1' (30 bytes) from 'ra=0x8048412'

1062078174: 1: total-size count source

1062078174: 1: 30 1 ra=0x8048412 /* Выделение здесь */

1062078174: 1: 30 1 Total of 1

1062078174: 1: unknown memory: 1 pointer, 30 bytes

1062078174: 1: ending time = 1062078174, elapsed since start = 0:00:00

Вывод содержит много статистических данных, которые нам пока не интересны. Интересна строка, в которой указывается не освобожденная память, с адресом возврата, указывающим на выделившую память функцию ('

ra=0х8048412
'). Документация
dmalloc
объясняет, как получить расположение в исходном коде этого адреса с использованием GDB.

$ gdb ch15-badmem1 /* Запустить GDB */

GNU gdb 5.3

...

(gdb) x 0x8048412 /* Проверить адрес */

0x8048412 <main+26>: 0х8910с483

(gdb) info line *(0x8048412) /* Получить сведения о строке */

Line 11 of "ch15-badmem1.с" starts at address 0x8048408 <main+16>

and ends at 0x8048418 <main+32>.

Это трудно, но выполнимо, если нет другого выбора. Однако, если вы включите в свою программу заголовочный файл "

dmalloc.h
" (после всех остальных операторов
#include
), вы можете получить сведения из исходного кода непосредственно в отчете.

...

1062080258: 1: top 10 allocations:

1062080258: 1: total-size count in-use-size count source

1062080258: 1: 30 1 30 1 ch15-badmem2.c:13

1062080258: 1: 30 1 30 1 Total of 1

1062080258: 1: dumping not-freed pointers changed since 0:

1062080258: 1: not freed: '0x804c008|s1' (30 bytes) from 'ch15-badmem2.c:13'

1062080258: 1: total-size count source

1062080258: 1: 30 1 ch15-badmem2.с:13

1062080258: 1: 30 1 Total of 1

...

(Файл

ch15-badmem2.c
является аналогичным
ch15-badmem1.с
, за исключением того, что он включает
"dmalloc.h"
, поэтому мы не стали беспокоиться с его отображением).

Отдельные возможности отладки включаются или выключаются посредством использования лексем (tokens) — специально распознаваемых идентификаторов — и опций

– р
для добавления лексем (свойств) или
– m
для их удаления. Имеются предопределенные комбинации, '
low
', '
med
' и '
high
'. Чем являются эти комбинации, вы можете увидеть с помощью '
dmalloc -Lv
'.

$ dmalloc low /* Установить low */

$ dmalloc -Lv /* Показать установки */

Debug Malloc Utility: http://dmalloc.com/

For a list of the command-line options enter: dmalloc --usage

Debug-Flags 0x4e40503 (82052355) (low) /* Текущие лексемы */

log-stats, log-non-free, log-bad-space, log-elapsed-time, check-fence,

free-blank, error-abort, alloc-blank, catch-null

Address not-set

Interval 100

Lock-On not-set

Logpath 'log2'

Start-File not-set

Полный список лексем вместе с кратким объяснением и соответствующим каждой лексеме числовым значением можно получить с помощью '

dmalloc -DV
':

$ dmalloc -DV

Debug Tokens:

none (nil) -- no functionality (0)

log-stats (lst) -- log general statistics (0x1)

Поделиться:
Популярные книги

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

Неудержимый. Книга XXII

Боярский Андрей
22. Неудержимый
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXII

Мажор. Дилогия.

Соколов Вячеслав Иванович
Фантастика:
боевая фантастика
8.05
рейтинг книги
Мажор. Дилогия.

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Как я строил магическую империю 10

Зубов Константин
10. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 10

Революция

Валериев Игорь
9. Ермак
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Революция

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Чужак из ниоткуда

Евтушенко Алексей Анатольевич
1. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5