0

アプリケーションのプロファイルを作成しようとしています。このために、コードを -pg および -lc_p オプションでコンパイルしました。正常にコンパイルされました

実行時に次のエラーが発生します。in 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

Valgrind は確かに amd64 で動作します。これは主要な開発プラットフォームです。そのため、valgrind で実行すると確実に役立ちます。

于 2011-04-20T04:36:39.900 に答える
1

gprof を使用してプロファイリングしようとしている現在、コードに潜在的なバグが 1 つ以上ある可能性があります。以下でコードを実行valgrindしてバグを洗い流し、それらのバグを修正してから、プロファイリングを再試行してください。

于 2010-04-01T13:14:13.183 に答える