valgraind,在AMD x64上,没有有用的堆栈信息

时间:2011-08-30 02:21:08

标签: stack-trace valgrind memory-leak-detector

当使用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,添加文件统计信息

    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 个答案:

答案 0 :(得分:1)

看起来你已经删除了程序中的符号。

相关问题