我正在尝试使用 callgrind 分析器来分析我的 C++ 程序。我在 Intel 32 位处理器上的 Linux Centos 版本 5.5 上使用 Valgrind 版本 3.6,1。当我尝试分析我的程序时,我不断收到以下错误(如下所示)。我已经使用过 Linux gprof,但它没有提供任何有用的分析信息。请告诉我我做错了什么或者我应该使用什么解决方法。谢谢
valgrind --tool=callgrind --dump-instr=yes --simulate-cache-yes --collect-jumps=yes ./MatchUpAccurate.exe -input /home/frankc/DQTTest5/MatchUpTest/TestData/mdata2003.dbf -fileloc /home/frankc/DQTTest5/MatchUpTest/TestData -版本 15,
==25558== Callgrind,一个调用图生成缓存分析器,==25558== 版权所有 (C) 2002-2010,以及 Josef Weidendorfer 等人的 GNU GPL'd,==25558== 使用 Valgrind-3.6 .1 和 LibVEX;使用 -h 重新运行以获得版权信息,==25558== 命令:./MatchUpAccurate.exe -input /home/frankc/DQTTest5/MatchUpTest/TestData/mdata2003.dbf -fileloc /home/frankc/DQTTest5/MatchUpTest/TestData -version 15, ==25558==, ==25558== 对于交互控制,运行'callgrind_control -h'., memcpy, BB# 486126,
Callgrind: jumps.c:164 (new_jcc): Assertion '(0 <= jmp) && (jmp <= from->bb->cjmp_count)' failed., ==25558== at 0x3801E4C8: report_and_quit (m_libcassert.c: 193), ==25558== by 0x3801E69C: vgPlain_assert_fail (m_libcassert.c:267), ==25558== by 0x3800FCD9: vgCallgrind_get_jcc (jumps.c:164), ==25558== by 0x38003534: vgCallgrind_push :217), ==25558== by 0x38001FDB: vgCallgrind_setup_bbcc (bbcc.c:844), ==25558== by 0x629B9E93: ???,
调度状态:, running_tid=1,
线程 1:状态 = VgTs_Runnable,==25558== 位于 0xB64A30:memcpy(在 /lib/libc-2.5.so 中),==25558== 由 0xC845D3:__pthread_initialize_minimal(在 /lib/libpthread-2.5.so 中),= =25558== 由 0xC84217: ??? (在 /lib/libpthread-2.5.so 中),==25558== 由 0xC83DA7: ??? (在 /lib/libpthread-2.5.so 中),==25558== 通过 0xAE2162:call_init(在 /lib/ld-2.5.so 中),==25558== 通过 0xAE228F:_dl_init(在 /lib/ld-2.5 .so), ==25558== 由 0xAD484E: ??? (在 /lib/ld-2.5.so 中),
注意:另请参阅源代码分发中的常见问题解答。它包含几个常见问题的解决方法。特别是,如果 Valgrind 在识别程序中的问题之后中止或崩溃,则很有可能修复这些问题将阻止 Valgrind 中止或者,崩溃,特别是如果它发生在 m_mallocfree.c. 中,
如果这没有帮助,请将此错误报告给:www.valgrind.org,
在错误报告中,发送上述所有文本、valgrind、版本以及您使用的操作系统和版本。谢谢。