in free():错误:垃圾指针,太高无法理解分段错误:11(核心转储)gprof

时间:2010-04-01 12:59:24

标签: c++ profiling freebsd

我正在尝试描述我的应用程序。为此我用-pg和-lc_p选项编译了我的代码,它编译成功

在运行期间,我收到以下错误。 在free()中:错误:垃圾指针,太高而无法理解 分段错误:11(核心转储)

执行GDB会出错。

(gdb) b main
Breakpoint 1 at 0x5124d4:
(gdb) r
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100085]
cacheIp in free(): error: junk pointer, too high to make sense

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 100085]
0x00000000006c3a1f in pthread_sigmask ()

我的应用程序是多线程的,是C和C ++代码的组合。

uname -a
FreeBSD 6.3-RELEASE FreeBSD 6.3-RELEASE #0: Wed Jan 16 01:43:02 UTC 2008    root@palmer.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP amd64

没有-pg选项,代码工作正常。为什么代码会崩溃-pg。我错过了什么。

2 个答案:

答案 0 :(得分:1)

您的代码中可能存在一个或多个潜在错误,这些错误仅在您尝试使用gprof进行概要分析时才显示出来。尝试在valgrind下运行代码以清除任何错误 - 修复这些错误 - 然后再次尝试分析。

答案 1 :(得分:1)

Valgrind确实在amd64上工作,它是一个主要的开发平台。 所以在valgrind下运行它肯定会有所帮助。