valgrind, на AMD x64, полезной информации о стеке нет - PullRequest
1 голос
/ 30 августа 2011

когда я использую 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, как часто задаваемые вопросы по valgrind.

обновление 1, добавление информации о файле stat

    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

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

1 Ответ

1 голос
/ 30 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...