我正在尝试描述我的应用程序。为此我用-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。我错过了什么。
答案 0 :(得分:1)
您的代码中可能存在一个或多个潜在错误,这些错误仅在您尝试使用gprof进行概要分析时才显示出来。尝试在valgrind
下运行代码以清除任何错误 - 修复这些错误 - 然后再次尝试分析。
答案 1 :(得分:1)
Valgrind确实在amd64上工作,它是一个主要的开发平台。 所以在valgrind下运行它肯定会有所帮助。