0

我正在尝试分析我的应用程序。为此,我使用 -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 一起崩溃。我是不是错过了什么。

4

2 回答 2

1

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

于 2010-04-01T13:14:13.183 回答
1

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

于 2011-04-20T04:36:39.900 回答