1

Learn C the Hard Wayを進めており、valgrindのセクションを開始しています。

出力例の抜粋は次のとおりです。

==3082== Use of uninitialised value of size 8 
==3082==    at 0x4E730EB: _itoa_word (_itoa.c:195) 
==3082==    by 0x4E743D8: vfprintf (vfprintf.c:1613) 
==3082==    by 0x4E7E6F9: printf (printf.c:35) 
==3082==    by 0x40052B: main (ex4.c:11) 

私の出力は次のようになりますが:

==2362== Use of uninitialised value of size 4 
==2362==    at 0x40885CB: _itoa_word (in /lib/libc-2.16.so)
==2362==    by 0x408C13E: vfprintf (in /lib/libc-2.16.so)
==2362==    by 0x4092AE: printf (in /lib/libc-2.16.so)
==2362==    by 0x4061604: (below main) (in /lib/libc-2.16.so) 

Valgrindの出力を一致させるにはどうすればよいですか?2〜4行目についてはそれほど心配していませんが、最後の行が実際に対応していることを望んでいます(とにかく関連していると思います)。


私は次のようにex4を構築しました:

$ make ex4
cc -Wall -g    ex4.c    -o ex4
** Some warnings here **

そして、次のようにvalgrindを実行しました:

$ valgrind ./ex4

Arch linux、GCC4.7.1でソースからビルドされたvalgrind3.7.0を実行していますが、GLIBC 1.6を使用しているため、構成ファイルを変更して次のコードを追加しました。

     2.16)
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.16 family" >&5
$as_echo "2.16 family" >&6; }

$as_echo "#define GLIBC_2_16 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

前のケース;;と一致したのすぐ下。2.14)

4

1 に答える 1

1

標準ライブラリのデバッグ/シンボルがインストールされていないようです。

ライブラリのバージョンが異なるため、出力は常にわずかに異なりますが、デバッグパッケージを使用していくつかの行番号を取得できるはずです。

省略さ-O0れないようにする必要があるかもしれません。main()

于 2012-12-18T10:00:06.687 に答える