Вход/Регистрация
Linux программирование в примерах
вернуться

Роббинс Арнольд

Шрифт:

$ 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)

log-non-free (lnf) -- log non-freed pointers (0x2)

log-known (lkn) -- log only known non-freed (0x4)

log-trans (ltr) -- log memory transactions (0x8)

log-admin (lad) -- log administrative info (0x20)

log-blocks (lbl) -- log blocks when heap-map (0x40)

log-bad-space (lbs) -- dump space from bad pnt (0x100)

log-nonfree-space (lns) -- dump space from non-freed pointers (0x200)

log-elapsed-time (let) -- log elapsed-time for allocated pointer (0x40000)

log-current-time (let) -- log current-time for allocated pointer (0x80000)

check-fence (cfe) -- check fence-post errors (0x400)

check-heap (che) -- check heap adm structs (0x800)

check-lists (cli) -- check free lists (0x1000)

check-blank (cbl) -- check mem overwritten by alloc-blank, free-blank (0x2000)

  • Читать дальше
  • 1
  • ...
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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