valgrind, на AMD x64, нет полезной информации о стеке

когда использую valgrind для проверки утечек памяти, я сталкиваюсь с очень странной проблемой. В 32-битном Linux информация о стеке утечек очень понятна, например:


    ==10650==    by 0x8130FD3: SFNTSetContactServer
    ==10650==    by 0x81106CA: CLibLicense::GetOneLicense(std::string&, void*&) 
    ==10650==    by 0x81108C2: CLibLicense::StartingGet(void*&) 
    ==10650==    by 0x810F01A: CLibLicense::GetLicense()
    ==10650==    by 0x810DEBB: CLicenseManager::DoGetLicense(void*, unsigned int)

Но в x64 linux я могу получить информацию ??? только так:


    ==31031== 8 bytes in 1 blocks are definitely lost in loss record 196 of 2,210
    ==31031==    at 0x4A0646F: malloc (vg_replace_malloc.c:236)
    ==31031==    by 0x46AF78: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x46B016: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x421F99: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x42C240: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x42D731: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x42FC65: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x465C01: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x463DB6: ??? (in /opt/usr/local/sbin/Server)
    ==31031==    by 0x3116A1D993: (below main) (in /lib64/libc-2.5.so)

Программа не использует dlopen/dlclose, как сказано в FAQ по valgrind.

обновление 1, добавить информацию о статистике файла

    file Server
    Server: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

любые комментарии приветствуются!


person ric    schedule 30.08.2011    source источник
comment
Проверьте file /opt/usr/local/sbin/Server, чтобы убедиться, что символы не удалены.   -  person mark4o    schedule 30.08.2011
comment
файл не был разобран. файловый сервер Сервер: ELF 64-битный исполняемый файл LSB, AMD x86-64, версия 1 (SYSV), для GNU/Linux 2.6.9, динамически подключаемый (использует общие библиотеки), для GNU/Linux 2.6.9, без разделения   -  person ric    schedule 30.08.2011
comment
Вы используете текущую версию valgrind (3.6.1)?   -  person mark4o    schedule 31.08.2011
comment
Версия valgrind 3.6.1, последняя версия на ее сайте. # valgrind --версия valgrind-3.6.1   -  person ric    schedule 01.09.2011


Ответы (1)


Что ж, похоже, вы удалили символы из своей программы.

person TomH    schedule 30.08.2011
comment
Файл не удаляется, как показывает команда «файл». GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5) показывает информацию Чтение символов из /opt/usr/local/sbin/Server... (символы отладки не найдены)... выполнено во время отладки . Но gdb7.1 (установленный мной) не показывает эту информацию (Чтение символов из /opt/usr/local/sbin/Server... выполнено.). - person ric; 31.08.2011