2013-09-22 32 views
6

Benim kaynak kodunu ek açıklama göstermez nihayetCachegrind en cg_annotate benim kaynak kodu için

$ gcc -g -Wall play.c -o play && valgrind --tool=cachegrind --cachegrind-out-file=out ./play 
==17670== Cachegrind, a cache and branch-prediction profiler 
==17670== Copyright (C) 2002-2012, and GNU GPL'd, by Nicholas Nethercote et al. 
==17670== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info 
==17670== Command: ./play 
==17670== 
--17670-- warning: L3 cache found, using its data for the L2 simulation. 
==17670== 
==17670== I refs:  97,846 
==17670== I1 misses:  697 
==17670== LLi misses:  692 
==17670== I1 miss rate: 0.71% 
==17670== LLi miss rate: 0.70% 
==17670== 
==17670== D refs:  36,490 (25,595 rd + 10,895 wr) 
==17670== D1 misses:  1,657 (1,185 rd + 472 wr) 
==17670== LLd misses:  1,503 (1,043 rd + 460 wr) 
==17670== D1 miss rate: 4.5% ( 4.6%  + 4.3% ) 
==17670== LLd miss rate: 4.1% ( 4.0%  + 4.2% ) 
==17670== 
==17670== LL refs:  2,354 (1,882 rd + 472 wr) 
==17670== LL misses:  2,195 (1,735 rd + 460 wr) 
==17670== LL miss rate:  1.6% ( 1.4%  + 4.2% ) 

Ve cg_annotate çalıştıran:

$ cg_annotate out play.c 
-------------------------------------------------------------------------------- 
I1 cache:   65536 B, 64 B, 2-way associative 
D1 cache:   65536 B, 64 B, 2-way associative 
LL cache:   6291456 B, 64 B, 48-way associative 
Command:   ./play 
Data file:  out 
Events recorded: Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw 
Events shown:  Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw 
Event sort order: Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw 
Thresholds:  0.1 100 100 100 100 100 100 100 100 
Include dirs:  
User annotated: play.c 
Auto-annotation: off 

-------------------------------------------------------------------------------- 
    Ir I1mr ILmr  Dr D1mr DLmr  Dw D1mw DLmw 
-------------------------------------------------------------------------------- 
97,846 697 692 25,595 1,185 1,043 10,895 472 460 PROGRAM TOTALS 

-------------------------------------------------------------------------------- 
    Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw file:function 
-------------------------------------------------------------------------------- 
22,411 13 13 7,443 157 130 3,653 1 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-lookup.c:do_lookup_x 
17,322 10 10 3,596 87 83 1,828 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-lookup.c:_dl_lookup_symbol_x 
15,697 19 19 3,594 557 543 1,927 245 238 /build/eglibc-TepTGA/eglibc-2.17/elf/../sysdeps/x86_64/dl-machine.h:_dl_relocate_object 
9,072 2 2 2,694 17 11  0 0 0 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../strcmp.S:strcmp 
8,262 13 13 2,053 84 70 119 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/do-rel.h:_dl_relocate_object 
4,118 6 6 1,732 17 15 497 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-lookup.c:check_match.9345 
1,201 2 2 197 0 0  2 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-minimal.c:strsep 
1,149 36 36 301 1 1 138 10 10 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:_dl_map_object_from_fd 
1,139 14 14 377 14 13 158 13 13 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-version.c:_dl_check_map_versions 
1,057 31 31 223 1 1 110 2 2 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-deps.c:_dl_map_object_deps 
1,008 13 13 252 11 11 76 3 3 /build/eglibc-TepTGA/eglibc-2.17/string/../string/memcmp.c:bcmp 
    922 67 67 200 22 13 112 10 10 /build/eglibc-TepTGA/eglibc-2.17/elf/rtld.c:dl_main 
    779 2 2 201 6 0 116 2 2 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-misc.c:_dl_name_match_p 
    742 5 5 75 1 1  0 0 0 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../rtld-strlen.S:strlen 
    727 4 4 114 10 10  0 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-cache.c:_dl_cache_libcmp 
    606 4 4 114 0 0 112 1 1 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-minimal.c:__libc_memalign 
    586 11 11 96 3 3 111 21 21 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-object.c:_dl_new_object 
    549 8 8 96 14 14 47 12 12 /build/eglibc-TepTGA/eglibc-2.17/elf/get-dynamic-info.h:_dl_map_object_from_fd 
    520 11 11 113 6 6 83 3 3 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:open_verify 
    512 10 10 19 5 4 295 37 37 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../memset.S:memset 
    458 11 11 135 16 0 112 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-reloc.c:_dl_relocate_object 
    450 24 24 89 1 1 73 3 3 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:_dl_map_object 
    408 11 11 113 16 14 26 4 4 /build/eglibc-TepTGA/eglibc-2.17/elf/../elf/dl-sysdep.c:_dl_sysdep_start 
    377 5 5 54 2 1 39 3 3 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/memcpy.S:mempcpy 
    369 5 5 59 0 0 47 6 6 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../memcpy.S:memcpy 
    349 14 14 38 2 2 63 6 6 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:_dl_init_paths 
    344 2 2 117 25 25  2 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-environ.c:_dl_next_ld_env_entry 
    325 3 3  5 0 0 292 36 36 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-tls.c:_dl_allocate_tls_storage 
    317 16 16 49 10 10 27 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-cache.c:_dl_load_cache_lookup 
    311 14 14 105 0 0 42 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:open_path 
    270 11 11 86 5 0 33 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-fini.c:_dl_fini 
    266 11 11 46 6 6 20 7 7 /build/eglibc-TepTGA/eglibc-2.17/elf/get-dynamic-info.h:_dl_start 
    257 20 20 46 0 0 39 3 3 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-hwcaps.c:_dl_important_hwcaps 
    234 8 8 34 6 6 23 6 6 /build/eglibc-TepTGA/eglibc-2.17/elf/get-dynamic-info.h:dl_main 
    232 4 4 73 14 0 35 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-init.c:call_init 
    211 1 1 63 11 11 19 5 5 /build/eglibc-TepTGA/eglibc-2.17/elf/../sysdeps/x86_64/dl-machine.h:_dl_start 
    207 2 2 18 3 3  0 0 0 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../strchr.S:index 
    185 5 5 72 4 4 27 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-version.c:match_symbol 
    181 7 7 49 1 0 25 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-fini.c:_dl_sort_fini 
    175 17 13 83 1 0 21 1 1 ???:??? 
    175 6 6 20 4 2 19 6 6 /build/eglibc-TepTGA/eglibc-2.17/elf/rtld.c:_dl_start 
    168 10 10 18 2 2  6 0 0 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../cacheinfo.c:handle_amd 
    156 6 6 56 1 0 18 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/../elf/dl-runtime.c:_dl_fixup 
    146 2 2 30 5 5  0 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/do-rel.h:_dl_start 
    137 11 11 30 0 0 34 2 2 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-load.c:fillin_rpath 
    125 14 14 11 1 0 29 4 2 /build/eglibc-TepTGA/eglibc-2.17/string/../sysdeps/x86_64/multiarch/../cacheinfo.c:init_cacheinfo 
    111 3 3 36 0 0 51 5 5 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-error.c:_dl_catch_error 
    106 3 3 26 0 0 20 0 0 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-object.c:_dl_add_to_namespace_list 
    100 2 2 28 5 5 24 1 1 /build/eglibc-TepTGA/eglibc-2.17/elf/dl-lookup.c:_dl_setup_hash 

-------------------------------------------------------------------------------- 
-- User-annotated source: play.c 
-------------------------------------------------------------------------------- 
    No information has been collected for play.c 

Neden No information has been collected for play.c? Ben hata ayıklama sembolleri ile inşa etmedim, ama ben yaptım. Bir aramayla ilgili durumda

, bu GCC 4.8.1 ve Valgrind 3.8.1 ile Debian "jessie" olduğunu.

cevap

7

Ben göreceli yol olarak açıklamalı istediğiniz kaynak dosyası belirtmek için yeterli değil, bu yüzden aşağıdaki 2 komutların hiçbiri işe yarayacağını:

Bir mutlak yol olmak zorunda
$ cg_annotate out play.c 
$ cg_annotate out ./play.c 

:

$ cg_annotate out ~/projects/utils/play.c 
[snip] 
-------------------------------------------------------------------------------- 
-- User-annotated source: /home/tshepang/projects/utils/play.c 
-------------------------------------------------------------------------------- 
Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw 

2 0 0 0 0 0 1 0 0 int main() { 
1 0 0 0 0 0 0 0 0 return 0; 
2 0 0 2 0 0 0 0 0 } 

[snip] 
elbette, varsayarak aşağıdaki yolu (çağrıldığında callgrind_annotate sadece biz callgrind aracıyla Valgrind ran ki çalışacağını

Not i cachegrind) ait nstead:

$ callgrind_annotate out play.c 

diğer iki biçimde (./play.c ve ~/projects/utils/play.c)

bu UX hata yapma, işe yaramaz.

+0

Maalesef, callgrind_annotate relative_path işlevini çalıştırdığımla aynı çıktıyı elde ediyorum. Başka önerileriniz var mı? – Juto

+0

My os, Mac OS X – Juto

+0

bilmiyorum. Belki ayrı bir soru sormak? – Tshepang

İlgili konular