The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

njamdpm (1)
  • >> njamdpm (1) ( Linux man: Команды и прикладные программы пользовательского уровня )
  •  

    NAME

    njamdpm - Not Just Another Malloc Debugger Post-Mortem
     
    

    SYNOPSIS

    njamdpm [OPTIONS] <HEAP FILE>  

    DESCRIPTION

    njamdpm is a companion utility that allows you to examine the persistent heap saved by libnjamd(3) You can do things like query for certain addresses, show memory leaks, and show all past allocated memory. As of NJAMD 0.6.0, gdb(1) is required to make sense of the return addresses.  

    USAGE

     

    Options

    HEAP FILE
    The heap file will be in the current directory with a name of the form njamd-<pid>-heap, but only if NJAMD_PERSISTANT_HEAP was in the environment at the time of program execution
    -a address
    Search through the heap file for a chunk of memory that contains address. This can be VERY helpful when using gdb. Simply find the address that you accessed to cause the segmentation fault, use njamdpm to look it up in the heap, and viola! You have all sorts of info about the chunk: When it was allocated, when it was freed, how big is is, etc.
    -d depth
    When displaying return address info, only display depth return addresses. The max is specified in ./include/lib/njamd.h in the define TRACE_DEPTH (default is 3).
    -t
    Trim the heap file down to only the used portion. This is useful if for some reason the program somehow exits without trimming its own heap file down first. Note that when the heap file appears huge it's not actually taking up disk space.
    -s
    Dump basic status info about peak memory usage, NJAMD overhead, etc. Useful for determining if you should buy more ram, or write me an angry email :)
    -l
    Dump memory leaks in the heap. Also shows you info about where the memory was leaked, along with a total. Do note that this total and the subtotals are aligned bytes. They are aligned to the alignment of your architecture, or as specified by the value the NJAMD_ALIGN environment variable had when the heap was created.
    -f
    Dump freed memory in the heap. This option is only available if LIBNJAMD ran without NJAMD_CHK_FREE=none set.
     

    Using gdb with njamdpm

    When a segmentation fault happens, it's because, of course, you accessed an invalid address. So all you need to do is get gdb to give you the address you accessed, and then feed it to njamdpm. Ie if the segfault occurs on a line that does buf[i] = 2, issue print &buf[i] to gdb. Note that libnjamd(3) now has a function __nj_ptr_info that can be called from gdb that performs all this without njamdpm.

    To get gdb to translate these return addresses into something meaningful, issue

    info line *0xaddress

    to obtain the line number of the allocation request, or

    list *0xaddress

    to see the adjacent code as well.  

    NOTES

    Eventually I hope to add symbol translation right into njamdpm.  

    AUTHORS

    Mike Perry <[email protected]>
    
     

    SEE ALSO

    http://freshmeat.net/appindex/development/debugging.html

    njamd(3), efence(3), malloc(3), mmap(2), mprotect(2)


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    USAGE
    Options
    Using gdb with njamdpm
    NOTES
    AUTHORS
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру