Amazon Best VPN GoSearch

Favicon OnWorks

valgrind

Jalankan valgrind dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan valgrind yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


valgrind - satu set alatan untuk nyahpepijat dan atur cara pemprofilan

SINOPSIS


valgrind [pilihan-valgrind] [program anda] [pilihan-program anda]

DESCRIPTION


valgrind ialah program yang fleksibel untuk penyahpepijatan dan pemprofilan boleh laku Linux. Ia terdiri
daripada teras, yang menyediakan CPU sintetik dalam perisian, dan satu siri penyahpepijatan dan
alat profil. Seni bina adalah modular, supaya alat baru boleh dibuat dengan mudah dan
tanpa mengganggu struktur sedia ada.

Beberapa pilihan yang diterangkan di bawah berfungsi dengan semua alat Valgrind, dan beberapa hanya berfungsi dengannya
beberapa atau satu. Bahagian MEMCHECK OPTIONS dan bahagian di bawahnya menerangkan alat khusus
pilihan.

Halaman manual ini hanya merangkumi penggunaan dan pilihan asas. Untuk maklumat yang lebih komprehensif,
sila lihat dokumentasi HTML pada sistem anda:
$INSTALL/share/doc/valgrind/html/index.html, atau dalam talian:
http://www.valgrind.org/docs/manual/index.html.

TOOL PEMILIHAN PILIHAN


Satu-satunya pilihan yang paling penting.

--alat= [lalai: memcheck]
Jalankan alat Valgrind yang dipanggil nama alat, cth memcheck, cachegrind, callgrind, helgrind,
drd, massif, budak lelaki, tiada, exp-sgcheck, exp-bbv, exp-dhat, dll.

ASAS PILIHAN


Pilihan ini berfungsi dengan semua alat.

-h - membantu
Tunjukkan bantuan untuk semua pilihan, kedua-dua untuk teras dan untuk alat yang dipilih. Jika pilihan
diulang ia bersamaan dengan memberi --help-debug.

--help-debug
Sama seperti - membantu, tetapi juga menyenaraikan pilihan penyahpepijatan yang biasanya hanya berguna untuk
pemaju Valgrind.

--versi
Tunjukkan nombor versi teras Valgrind. Alat boleh mempunyai versi mereka sendiri
nombor. Terdapat skema untuk memastikan alat hanya dilaksanakan apabila teras
versi adalah salah satu yang diketahui berfungsi dengannya. Ini dilakukan untuk meminimumkan peluang
masalah pelik yang timbul daripada ketidakserasian versi alat-vs-teras.

-q, --senyap
Jalankan secara senyap, dan hanya cetak mesej ralat. Berguna jika anda menjalankan regresi
ujian atau mempunyai beberapa jentera ujian automatik lain.

-v, --verbose
Jadi lebih bertele-tele. Memberi maklumat tambahan tentang pelbagai aspek program anda, seperti:
objek yang dikongsi dimuatkan, penindasan yang digunakan, kemajuan instrumentasi
dan enjin pelaksanaan, dan amaran tentang kelakuan luar biasa. Mengulangi pilihan
meningkatkan tahap verbositi.

--trace-children= [lalai: tidak]
Apabila didayakan, Valgrind akan menjejak ke dalam sub-proses yang dimulakan melalui exec sistem
panggilan. Ini adalah perlu untuk program berbilang proses.

Ambil perhatian bahawa Valgrind memang menjejak ke dalam anak a garpu (akan sukar untuk tidak,
sejak garpu membuat salinan proses yang sama), jadi pilihan ini boleh dikatakan teruk
bernama. Walau bagaimanapun, kebanyakan kanak-kanak daripada garpu panggilan segera hubungi exec anyway.

--trace-children-skip=patt1,patt2,...
Pilihan ini hanya mempunyai kesan apabila --trace-children=ya dinyatakan. Ia membolehkan
beberapa kanak-kanak untuk dilangkau. Pilihan mengambil senarai corak yang dipisahkan koma untuk
nama anak boleh laku yang tidak patut dikesan oleh Valgrind. Corak boleh
sertakan metakarakter ? dan *, yang mempunyai makna biasa.

Ini boleh berguna untuk memangkas dahan yang tidak menarik daripada pokok proses sedang
berjalan di Valgrind. Tetapi anda harus berhati-hati apabila menggunakannya. Apabila Valgrind melangkau jejak
menjadi boleh laku, ia bukan sahaja melangkau mengesan boleh laku itu, ia juga melangkau
mengesan mana-mana proses anak boleh laku itu. Dalam erti kata lain, bendera tidak
hanya menyebabkan pengesanan berhenti pada boleh laku yang ditentukan -- ia melangkau pengesanan
keseluruhan subpokok proses berakar pada mana-mana executable yang ditentukan.

--trace-children-skip-by-arg=patt1,patt2,...
Ini sama seperti --jejak-kanak-kanak-skip, dengan satu perbezaan: keputusan tentang
sama ada untuk mengesan ke dalam proses kanak-kanak dibuat dengan meneliti hujah-hujah kepada kanak-kanak itu
proses, bukannya nama boleh lakunya.

--anak-senyap-selepas-garpu= [lalai: tidak]
Apabila didayakan, Valgrind tidak akan menunjukkan sebarang keluaran penyahpepijatan atau pengelogan untuk kanak-kanak itu
proses yang terhasil daripada a garpu panggilan. Ini boleh menjadikan output kurang mengelirukan (walaupun
lebih mengelirukan) apabila berhadapan dengan proses yang mencipta kanak-kanak. Ia terutamanya
berguna bersama-sama dengan --trace-anak=. Penggunaan pilihan ini juga sangat kuat
disyorkan jika anda meminta output XML (--xml=ya), kerana sebaliknya XML dari
anak dan ibu bapa mungkin bercampur aduk, yang biasanya menjadikannya tidak berguna.

--vgdb= [lalai: ya]
Valgrind akan menyediakan fungsi "gdbserver" apabila --vgdb=ya or --vgdb=penuh is
ditentukan. Ini membenarkan penyahpepijat GNU GDB luaran mengawal dan menyahpepijat program anda
apabila ia dijalankan pada Valgrind. --vgdb=penuh menanggung overhed prestasi yang ketara, tetapi
menyediakan titik putus dan titik pantau yang lebih tepat. Lihat Menyahpepijat menggunakan program anda
gdbserver dan GDB Valgrind untuk penerangan terperinci.

Jika gdbserver terbenam didayakan tetapi tiada gdb sedang digunakan, vgdb
utiliti baris arahan boleh menghantar "arahan monitor" kepada Valgrind daripada shell. The
Teras Valgrind menyediakan satu set arahan monitor Valgrind. Alat boleh secara pilihan
menyediakan arahan monitor khusus alat, yang didokumenkan dalam khusus alat
bab.

--vgdb-error= [lalai: 999999999]
Gunakan pilihan ini apabila gdbserver Valgrind didayakan dengan --vgdb=ya or --vgdb=penuh.
Alat yang melaporkan ralat akan menunggu ralat "nombor" dilaporkan sebelum membekukan
program dan menunggu anda untuk berhubung dengan GDB. Ia berikutan bahawa nilai sifar
akan menyebabkan gdbserver dimulakan sebelum program anda dilaksanakan. Ini adalah
biasanya digunakan untuk memasukkan titik putus GDB sebelum pelaksanaan, dan juga berfungsi dengan alatan
yang tidak melaporkan ralat, seperti Massif.

--vgdb-stop-at= [lalai: tiada]
Gunakan pilihan ini apabila gdbserver Valgrind didayakan dengan --vgdb=ya or --vgdb=penuh.
Pelayan gdb Valgrind akan digunakan untuk setiap ralat selepas itu --vgdb-error telah
dilaporkan. Anda juga boleh meminta gdbserver Valgrind untuk digunakan untuk yang lain
peristiwa, dinyatakan dalam salah satu cara berikut:

· senarai dipisahkan koma bagi satu atau lebih daripada startup keluar valgrindabexit.

Nilai-nilai startup keluar valgrindabexit masing-masing menunjukkan untuk memanggil gdbserver
sebelum program anda dilaksanakan, selepas arahan terakhir program anda, pada
Keluar tidak normal Valgrind (cth ralat dalaman, kehabisan ingatan, ...).

Catatan: startup and --vgdb-error=0 kedua-duanya akan menyebabkan Valgrind gdbserver digunakan
sebelum program anda dilaksanakan. The --vgdb-error=0 di samping itu akan menyebabkan anda
program untuk berhenti pada semua ralat berikutnya.

· semua untuk menentukan set lengkap. Ia bersamaan dengan
--vgdb-stop-at=startup, exit,valgrindabexit.

· tiada untuk set kosong.

--track-fds= [lalai: tidak]
Apabila didayakan, Valgrind akan mencetak senarai deskriptor fail terbuka semasa keluar atau hidup
permintaan, melalui arahan monitor gdbserver v.info open_fds. Bersama dengan setiap fail
deskriptor dicetak surih belakang tindanan tempat fail dibuka dan sebarang butiran
berkaitan dengan deskriptor fail seperti nama fail atau butiran soket.

--cap masa= [lalai: tidak]
Apabila didayakan, setiap mesej didahului dengan petunjuk jam dinding yang telah berlalu
masa sejak permulaan, dinyatakan sebagai hari, jam, minit, saat dan milisaat.

--log-fd= [lalai: 2, stderr]
Menentukan bahawa Valgrind harus menghantar semua mesejnya ke fail yang ditentukan
deskriptor. Lalai, 2, ialah saluran ralat standard (stderr). Ambil perhatian bahawa ini mungkin
mengganggu penggunaan stderr oleh pelanggan sendiri, kerana output Valgrind akan berlaku
berselang dengan mana-mana output yang dihantar oleh pelanggan kepada stderr.

--fail-log=
Menentukan bahawa Valgrind harus menghantar semua mesejnya ke fail yang ditentukan. Sekiranya
nama fail kosong, ia menyebabkan pengguguran. Terdapat tiga penentu format khas yang
boleh digunakan dalam nama fail.

%p digantikan dengan ID proses semasa. Ini sangat berguna untuk program itu
menggunakan pelbagai proses. AMARAN: Jika anda menggunakan --trace-children=ya dan program anda
memanggil berbilang proses ATAU garpu program anda tanpa memanggil exec selepas itu, dan
anda tidak menggunakan penentu ini (atau %q specifier di bawah), keluaran Valgrind daripada semua
proses tersebut akan masuk ke dalam satu fail, mungkin bercampur aduk, dan mungkin tidak lengkap.

%q{FOO} digantikan dengan kandungan pembolehubah persekitaran FOO. Jika {FOO}
sebahagiannya cacat, ia menyebabkan pengguguran. Penentu ini jarang diperlukan, tetapi sangat
berguna dalam keadaan tertentu (cth. semasa menjalankan program MPI). Ideanya ialah anda
tentukan pembolehubah yang akan ditetapkan secara berbeza untuk setiap proses dalam kerja, untuk
contoh BPROC_RANK atau apa sahaja yang berkenaan dalam persediaan MPI anda. Jika dinamakan
pembolehubah persekitaran tidak ditetapkan, ia menyebabkan pengguguran. Ambil perhatian bahawa dalam beberapa cengkerang, {
and } watak-watak mungkin perlu dilepaskan dengan garis miring ke belakang.

%% digantikan dengan %.

Jika sesuatu % diikuti oleh mana-mana watak lain, ia menyebabkan pengguguran.

Jika nama fail menentukan nama fail relatif, ia dimasukkan ke dalam huruf awal program
direktori kerja : ini ialah direktori semasa apabila program memulakannya
pelaksanaan selepas garpu atau selepas exec. Jika ia menentukan nama fail mutlak (cth.
bermula dengan '/') kemudian ia diletakkan di sana.

--log-soket=
Menentukan bahawa Valgrind harus menghantar semua mesejnya ke port yang ditentukan di
alamat IP yang ditentukan. Port boleh ditinggalkan, dalam hal ini port 1500 digunakan. Sekiranya
sambungan tidak boleh dibuat ke soket yang ditentukan, Valgrind kembali menulis
output kepada ralat piawai (stderr). Pilihan ini bertujuan untuk digunakan dalam
sempena program valgrind-pendengar. Untuk butiran lanjut, lihat
ulasan dalam manual.

BERKAITAN RALAT PILIHAN


Pilihan ini digunakan oleh semua alat yang boleh melaporkan ralat, contohnya Memcheck, tetapi tidak
Cachegrind.

--xml= [lalai: tidak]
Apabila didayakan, bahagian penting output (cth. mesej ralat alat) akan dimasukkan
Format XML dan bukannya teks biasa. Tambahan pula, output XML akan dihantar ke a
saluran keluaran yang berbeza daripada output teks biasa. Oleh itu, anda juga mesti menggunakannya
of --xml-fd, --xml-file or --xml-soket untuk menentukan ke mana XML akan dihantar.

Mesej yang kurang penting masih akan dicetak dalam teks biasa, tetapi kerana XML
output dan output teks biasa dihantar ke saluran keluaran yang berbeza (destinasi
output teks biasa masih dikawal oleh --log-fd, --fail log and --soket log)
ini tidak sepatutnya menimbulkan masalah.

Pilihan ini bertujuan untuk menjadikan kehidupan lebih mudah untuk alatan yang menggunakan keluaran Valgrind sebagai
input, seperti hujung hadapan GUI. Pada masa ini pilihan ini berfungsi dengan Memcheck, Helgrind,
DRD dan SGcheck. Format output dinyatakan dalam fail
docs/internals/xml-output-protocol4.txt dalam pepohon sumber untuk Valgrind 3.5.0 atau
kemudian.

Pilihan yang disyorkan untuk GUI lulus, apabila meminta output XML, ialah: --xml=ya
untuk membolehkan output XML, --xml-file untuk menghantar output XML kepada (mungkin GUI-dipilih)
fail, --fail log untuk menghantar output teks biasa ke fail kedua yang dipilih GUI,
--anak-senyap-selepas-garpu=ya, dan -q untuk mengehadkan output teks biasa kepada kritikal
mesej ralat yang dibuat oleh Valgrind sendiri. Sebagai contoh, kegagalan membaca yang ditentukan
fail penindasan dikira sebagai mesej ralat kritikal. Dengan cara ini, untuk berjaya
jalankan fail output teks akan kosong. Tetapi jika ia tidak kosong, maka ia akan mengandungi
maklumat penting yang harus dimaklumkan oleh pengguna GUI.

--xml-fd= [lalai: -1, kurang upaya]
Menentukan bahawa Valgrind harus menghantar output XMLnya kepada deskriptor fail yang ditentukan.
Ia mesti digunakan bersama-sama dengan --xml=ya.

--xml-file=
Menentukan bahawa Valgrind harus menghantar output XMLnya ke fail yang ditentukan. Ia mesti
digunakan bersama dengan --xml=ya. Mana-mana %p or %q urutan yang muncul dalam nama fail
diperluaskan dengan cara yang sama seperti yang berlaku --fail log. Lihat penerangan
of --fail log untuk maklumat lanjut.

--xml-soket=
Menentukan bahawa Valgrind harus menghantar output XMLnya port yang ditentukan pada yang ditentukan
Alamat IP. Ia mesti digunakan bersama-sama dengan --xml=ya. Bentuk hujahnya ialah
sama seperti yang digunakan oleh --soket log. Lihat penerangan tentang --soket log untuk lebih lanjut
butiran.

--xml-user-comment=
Benamkan rentetan ulasan pengguna tambahan pada permulaan output XML. Hanya berfungsi apabila
--xml=ya dinyatakan; tidak diendahkan sebaliknya.

--demangle= [lalai: ya]
Dayakan/lumpuhkan demangling automatik (penyahkodan) nama C++. Didayakan secara lalai. Bila
didayakan, Valgrind akan cuba menterjemahkan nama C++ yang dikodkan kembali kepada sesuatu
mendekati asal. Demangler mengendalikan simbol yang dihancurkan oleh g++ versi 2.X,
3.X dan 4.X.

Fakta penting tentang demangling ialah nama fungsi yang disebut dalam penindasan
fail hendaklah dalam bentuk rosak. Valgrind tidak demangle nama fungsi apabila
mencari penindasan yang berkenaan, kerana melakukan sebaliknya akan membuat penindasan
kandungan fail bergantung pada keadaan jentera demangling Valgrind, dan juga perlahan
padanan penindasan ke bawah.

--bilangan-pemanggil= [lalai: 12]
Menentukan bilangan maksimum entri yang ditunjukkan dalam surih tindanan yang mengenal pasti program
lokasi. Ambil perhatian bahawa ralat sering berlaku menggunakan hanya empat lokasi fungsi teratas
(tempat dalam fungsi semasa, dan tiga pemanggil segeranya). Jadi ini
tidak menjejaskan jumlah ralat yang dilaporkan.

Nilai maksimum untuk ini ialah 500. Ambil perhatian bahawa tetapan yang lebih tinggi akan menjadikan Valgrind menjalankan a
sedikit lebih perlahan dan mengambil lebih sedikit memori, tetapi boleh berguna apabila bekerja dengannya
program dengan rantai panggilan bersarang dalam.

--unw-stack-scan-thresh= [lalai: 0] , --unw-stack-scan-frames= [lalai:
5]
Sokongan pengimbasan tindanan hanya tersedia pada sasaran ARM.

Bendera ini mendayakan dan mengawal melonggarkan tindanan dengan mengimbas tindanan. Apabila biasa
mekanisme melonggarkan tindanan -- penggunaan rekod CFI Dwarf, dan berikutan penunjuk bingkai
-- gagal, pengimbasan tindanan mungkin dapat memulihkan surih tindanan.

Ambil perhatian bahawa pengimbasan tindanan ialah mekanisme heuristik yang tidak tepat yang mungkin memberi banyak manfaat
keputusan yang mengelirukan, atau tiada langsung. Ia harus digunakan hanya dalam kecemasan, apabila biasa
meleraikan gagal, dan adalah penting untuk mempunyai kesan tindanan.

Pengimbasan tindanan ialah teknik mudah: pelepas membaca perkataan daripada tindanan, dan
cuba meneka yang mana antara mereka mungkin alamat pemulangan, dengan menyemak sama ada mereka
titik hanya selepas arahan panggilan ARM atau Thumb. Jika ya, perkataan itu ditambahkan pada
jejak belakang.

Bahaya utama berlaku apabila panggilan fungsi kembali, meninggalkan alamat pemulangannya
terdedah, dan fungsi baru dipanggil, tetapi fungsi baru tidak menimpa fungsi lama
alamat. Hasilnya ialah jejak belakang mungkin mengandungi entri untuk fungsi
yang telah kembali, dan jadi sangat mengelirukan.

Had kedua pelaksanaan ini ialah ia hanya akan mengimbas halaman (4KB,
biasanya) mengandungi penuding tindanan permulaan. Jika bingkai tindanan adalah besar, ini
boleh mengakibatkan hanya beberapa (atau bahkan tidak ada) yang hadir dalam jejak. Juga, jika anda
tidak bernasib baik dan mempunyai penuding tindanan awal berhampiran penghujung halaman yang mengandunginya, the
imbasan mungkin terlepas semua bingkai yang menarik.

Secara lalai, pengimbasan tindanan dilumpuhkan. Kes penggunaan biasa ialah memintanya apabila a
surih tindanan sebaliknya akan menjadi sangat pendek. Jadi, untuk membolehkannya, gunakan
--unw-stack-scan-thresh=nombor. Ini meminta Valgrind untuk mencuba menggunakan pengimbasan tindanan untuk
"lanjutkan" surih tindanan yang mengandungi kurang daripada bingkai nombor.

Jika pengimbasan tindanan berlaku, ia hanya akan menjana paling banyak bilangan bingkai
ditentukan oleh --unw-stack-scan-frames. Biasanya, pengimbasan tindanan menjana begitu banyak
entri sampah bahawa nilai ini ditetapkan kepada nilai rendah (5) secara lalai. Tidak akan
surih tindanan yang lebih besar daripada nilai yang ditentukan oleh --num-callers dicipta.

--had-ralat= [lalai: ya]
Apabila didayakan, Valgrind berhenti melaporkan ralat selepas 10,000,000 secara keseluruhan, atau 1,000
yang berbeza, telah dilihat. Ini adalah untuk menghentikan mesin pengesan ralat daripada
menjadi overhed prestasi yang besar dalam program dengan banyak ralat.

--error-exitcode= [lalai: 0]
Menentukan kod keluar alternatif untuk dikembalikan jika Valgrind melaporkan sebarang ralat dalam
lari. Apabila ditetapkan kepada nilai lalai (sifar), nilai pulangan daripada Valgrind akan sentiasa
menjadi nilai pulangan bagi proses yang disimulasikan. Apabila ditetapkan kepada nilai bukan sifar, itu
nilai dikembalikan, jika Valgrind mengesan sebarang ralat. Ini berguna untuk digunakan
Valgrind sebagai sebahagian daripada suite ujian automatik, kerana ia memudahkan untuk mengesan ujian
kes yang Valgrind telah melaporkan ralat, hanya dengan memeriksa kod pemulangan.

--penanda-ralat= , [lalai: tiada]
Apabila ralat dikeluarkan sebagai teks biasa (iaitu XML tidak digunakan), --penanda-ralat mengarahkan kepada
keluarkan baris yang mengandungi memulakan (akhir) rentetan sebelum (selepas) setiap ralat.

Garis penanda sedemikian memudahkan pencarian ralat dan/atau mengekstrak ralat dalam
fail output yang mengandungi ralat valgrind bercampur dengan output program.

Ambil perhatian bahawa penanda kosong diterima. Jadi, hanya menggunakan penanda permulaan (atau penamat) sahaja
mungkin.

--sigill-diagnostik= [lalai: ya]
Dayakan/lumpuhkan pencetakan diagnostik arahan haram. Didayakan secara lalai, tetapi
lalai kepada dilumpuhkan apabila --senyap diberikan. Lalai sentiasa boleh secara eksplisit
ditindih dengan memberikan pilihan ini.

Apabila didayakan, mesej amaran akan dicetak, bersama-sama dengan beberapa diagnostik, pada bila-bila masa
arahan ditemui bahawa Valgrind tidak boleh menyahkod atau menterjemah, sebelum
program diberi isyarat SIGILL. Selalunya arahan yang menyalahi undang-undang menunjukkan pepijat dalam
program atau tiada sokongan untuk arahan tertentu dalam Valgrind. Tetapi beberapa
program sengaja cuba untuk melaksanakan arahan yang mungkin hilang dan terperangkap
isyarat SIGILL untuk mengesan ciri pemproses. Menggunakan bendera ini memungkinkan untuk
elakkan output diagnostik yang anda akan perolehi dalam kes sedemikian.

--tunjukkan-bawah-utama= [lalai: tidak]
Secara lalai, surih tindanan untuk ralat tidak menunjukkan sebarang fungsi yang muncul di bawah utama
kerana kebanyakan masa ia adalah bahan perpustakaan C yang tidak menarik dan/atau gobbledygook.
Sebagai alternatif, jika utama tidak terdapat dalam surih tindanan, surih tindanan tidak akan ditunjukkan
mana-mana fungsi di bawah utama-fungsi seperti glibc __libc_start_main.
Tambahan pula, jika utama-fungsi seperti hadir dalam jejak, ia dinormalisasi sebagai
(di bawah utama), untuk menjadikan output lebih deterministik.

Jika pilihan ini didayakan, semua entri surih tindanan akan ditunjukkan dan utama-Suka
fungsi tidak akan dinormalisasi.

--fullpath-after= [lalai: tidak Menunjukkan sumber laluan]
Secara lalai Valgrind hanya menunjukkan nama fail dalam surih tindanan, tetapi bukan laluan penuh ke
fail sumber. Apabila menggunakan Valgrind dalam projek besar di mana sumber berada
berbilang direktori berbeza, ini boleh menyusahkan. --fullpath-selepas menyediakan
penyelesaian yang fleksibel untuk masalah ini. Apabila pilihan ini ada, laluan ke setiap
fail sumber ditunjukkan, dengan kaveat yang sangat penting berikut: jika rentetan terdapat di
laluan, kemudian laluan sehingga dan termasuk rentetan ditinggalkan, jika tidak laluan ditunjukkan
tidak diubah suai. Perhatikan bahawa rentetan tidak diperlukan untuk menjadi awalan laluan.

Sebagai contoh, pertimbangkan fail bernama /home/janedoe/blah/src/foo/bar/xyzzy.c. Menentukan
--fullpath-after=/home/janedoe/blah/src/ akan menyebabkan Valgrind menunjukkan nama sebagai
foo/bar/xyzzy.c.

Kerana rentetan tidak diperlukan untuk menjadi awalan, --fullpath-after=src/ akan menghasilkan
keluaran yang sama. Ini berguna apabila laluan mengandungi sewenang-wenangnya yang dihasilkan oleh mesin
watak. Sebagai contoh, laluan /my/build/dir/C32A1B47/blah/src/foo/xyzzy boleh
dipangkas kepada foo/xyzzy menggunakan --fullpath-after=/blah/src/.

Jika anda hanya mahu melihat laluan penuh, nyatakan rentetan kosong:
--fullpath-after=. Ini bukan kes istimewa, hanya akibat logik daripada
peraturan di atas.

Akhirnya, anda boleh menggunakan --fullpath-selepas berkali-kali. Sebarang penampilan yang menyebabkannya
Valgrind untuk beralih kepada menghasilkan laluan penuh dan menggunakan peraturan penapisan di atas. setiap satu
laluan yang dihasilkan dibandingkan dengan semua --fullpath-selepas-rentetan yang ditentukan, dalam
pesanan ditentukan. Rentetan pertama yang dipadankan menyebabkan laluan dipotong sebagai
diterangkan di atas. Jika tiada yang sepadan, laluan penuh ditunjukkan. Ini memudahkan pemotongan
awalan apabila sumber diambil daripada beberapa direktori yang tidak berkaitan.

--extra-debuginfo-path= [lalai: undefined and tidak digunakan]
Secara lalai Valgrind mencari dalam beberapa laluan terkenal untuk objek nyahpepijat, seperti
/usr/lib/debug/.

Walau bagaimanapun, mungkin terdapat senario di mana anda mungkin ingin meletakkan objek nyahpepijat pada
lokasi sewenang-wenangnya, seperti storan luaran apabila menjalankan Valgrind pada peranti mudah alih
dengan storan tempatan yang terhad. Contoh lain mungkin situasi di mana anda tidak mempunyai
kebenaran untuk memasang pakej objek debug pada sistem yang anda jalankan
Valgrind.

Dalam senario ini, anda mungkin menyediakan laluan mutlak sebagai tempat tambahan dan terakhir untuk
Valgrind untuk mencari objek nyahpepijat dengan menentukan
--extra-debuginfo-path=/path/to/debug/objects. Laluan yang diberikan akan didahulukan ke
nama laluan mutlak bagi objek yang dicari. Sebagai contoh, jika Valgrind sedang mencari
info debug untuk /w/x/y/zz.so dan --extra-debuginfo-path=/a/b/c ditentukan, ia akan
cari objek nyahpepijat di /a/b/c/w/x/y/zz.so.

Bendera ini hendaklah dinyatakan sekali sahaja. Jika ia dinyatakan beberapa kali, hanya
contoh terakhir dihormati.

--debuginfo-server=ipaddr:port [lalai: undefined and tidak digunakan]
Ini adalah ciri baharu, percubaan, yang diperkenalkan dalam versi 3.9.0.

Dalam sesetengah senario mungkin mudah untuk membaca debuginfo daripada objek yang disimpan pada a
mesin yang berbeza. Dengan bendera ini, Valgrind akan menanyakan pelayan debuginfo yang sedang dihidupkan
ipaddr dan mendengar pada port port, jika ia tidak dapat mencari objek debuginfo dalam local
sistem fail.

Pelayan debuginfo mesti menerima sambungan TCP pada port port. Pelayan debuginfo ialah
terkandung dalam fail sumber auxprogs/valgrind-di-server.c. Ia hanya akan berkhidmat daripada
direktori ia dimulakan. port lalai kepada 1500 dalam kedua-dua klien dan pelayan jika
tidak dinyatakan.

Jika Valgrind mencari debuginfo untuk /w/x/y/zz.so dengan menggunakan pelayan debuginfo, ia
akan menanggalkan komponen nama laluan dan hanya meminta zz.so pada pelayan. Itu dalam
turn akan melihat hanya dalam direktori kerja semasanya untuk objek debuginfo yang sepadan.

Data debuginfo dihantar dalam serpihan kecil (8 KB) seperti yang diminta oleh Valgrind.
Setiap blok dimampatkan menggunakan LZO untuk mengurangkan masa penghantaran. Pelaksanaan telah
telah ditala untuk prestasi terbaik melalui pautan rangkaian 802.11g (WiFi) satu peringkat.

Ambil perhatian bahawa menyemak padanan objek utama vs nyahpepijat, menggunakan CRC pautan nyahpepijat GNU
skema, dilakukan walaupun semasa menggunakan pelayan debuginfo. Untuk melumpuhkan pemeriksaan sedemikian,
anda juga perlu menentukan --allow-mismatched-debuginfo=yes.

Secara lalai sistem binaan Valgrind akan membina pelayan-valgrind untuk sasaran
platform, yang hampir pasti bukan yang anda mahukan. Setakat ini kami tidak mampu
ketahui cara mendapatkan automake/autoconf untuk membinanya untuk platform binaan. Jika anda mahu
untuk menggunakannya, anda perlu menyusun semula dengan tangan menggunakan arahan yang ditunjukkan di bahagian atas
auxprogs/valgrind-di-server.c.

--allow-mismatched-debuginfo=no|ya [tidak]
Apabila membaca debuginfo daripada objek debuginfo yang berasingan, Valgrind akan menyemak secara lalai
bahawa objek utama dan debuginfo sepadan, menggunakan mekanisme pautan nyahpepijat GNU. ini
menjamin bahawa ia tidak membaca debuginfo daripada objek debuginfo yang lapuk, dan
juga memastikan bahawa Valgrind tidak boleh ranap akibat ketidakpadanan.

Semakan ini boleh diganti menggunakan --allow-mismatched-debuginfo=yes. Ini mungkin
berguna apabila debuginfo dan objek utama tidak dipecahkan dengan cara yang betul. Jadilah
berhati-hati apabila menggunakan ini, walaupun: ia melumpuhkan semua pemeriksaan konsisten, dan Valgrind
telah diperhatikan ranap apabila objek utama dan debuginfo tidak sepadan.

--penindasan= [lalai: $PREFIX/lib/valgrind/default.supp]
Menentukan fail tambahan untuk membaca perihalan ralat untuk ditekan. Anda boleh
gunakan sehingga 100 fail penindasan tambahan.

--gen-penindasan= [lalai: tidak]
Apabila ditetapkan ke yes, Valgrind akan berhenti seketika selepas setiap ralat ditunjukkan dan mencetak baris:

---- Penindasan cetakan ? --- [Kembali/N/n/Y/y/C/c] ----

menekan penolakan, Atau N penolakan or n penolakan, menyebabkan Valgrind meneruskan pelaksanaan tanpa mencetak a
penindasan untuk kesilapan ini.

menekan Y penolakan or y penolakan menyebabkan Valgrind menulis penindasan untuk ralat ini. Awak boleh
kemudian potong dan tampalkannya ke dalam fail penindasan jika anda tidak mahu mendengar tentang
kesilapan pada masa hadapan.

Apabila ditetapkan ke semua, Valgrind akan mencetak penindasan untuk setiap ralat yang dilaporkan, tanpa
menyoal pengguna.

Pilihan ini amat berguna dengan program C++, kerana ia mencetak
penindasan dengan nama rosak, seperti yang diperlukan.

Ambil perhatian bahawa penindasan yang dicetak adalah sekhusus yang mungkin. Anda mungkin mahu biasa
naik yang serupa, dengan menambahkan kad bebas pada nama fungsi, dan dengan menggunakan peringkat bingkai
kad bebas. Kemudahan wildcard adalah berkuasa namun fleksibel, dan dengan sedikit
penyuntingan berhati-hati, anda mungkin boleh menyekat seluruh keluarga ralat yang berkaitan dengan
hanya beberapa penindasan.

Kadang-kadang dua ralat berbeza ditindas oleh penindasan yang sama, dalam kes ini
Valgrind akan mengeluarkan penindasan lebih daripada sekali, tetapi anda hanya perlu mempunyai satu
salin dalam fail penindasan anda (tetapi mempunyai lebih daripada satu tidak akan menyebabkan masalah). Juga,
nama penindasan diberikan sebagai ; nama tidak
sangat penting, ia hanya digunakan dengan -v pilihan yang mencetak semua penindasan yang digunakan
rekod.

--input-fd= [lalai: 0, stdin]
Apabila menggunakan --gen-suppressions=ya, Valgrind akan berhenti untuk membaca input papan kekunci
daripada anda apabila setiap ralat berlaku. Secara lalai ia membaca daripada input standard (stdin),
yang bermasalah untuk program yang menutup stdin. Pilihan ini membolehkan anda menentukan
deskriptor fail alternatif untuk membaca input.

--dsymutil=tidak|ya [ya]
Pilihan ini hanya berkaitan apabila menjalankan Valgrind pada Mac OS X.

Mac OS X menggunakan skema pemautan maklumat nyahpepijat (debuginfo) tertunda. Apabila objek
fail yang mengandungi debuginfo dipautkan ke .dylib atau boleh laku, debuginfo ialah
tidak disalin ke dalam fail akhir. Sebaliknya, info debug mesti dipautkan secara manual oleh
menjalankan dsymutil, utiliti yang disediakan sistem, pada boleh laku atau .dylib. The
terhasil gabungan debuginfo diletakkan dalam direktori bersama boleh laku atau
.dylib, tetapi dengan sambungan .dSYM.

Dengan --dsymutil=tidak, Valgrind akan mengesan kes di mana direktori .dSYM adalah sama ada
hilang, atau ada tetapi nampaknya tidak sepadan dengan boleh laku yang berkaitan atau
.dylib, kemungkinan besar kerana ia sudah lapuk. Dalam kes ini, Valgrind akan mencetak a
mesej amaran tetapi tidak mengambil tindakan selanjutnya.

Dengan --dsymutil=ya, Valgrind akan, dalam kes sedemikian, secara automatik menjalankan dsymutil as
perlu untuk membawa maklumat debug terkini. Untuk semua tujuan praktikal, jika anda sentiasa
penggunaan --dsymutil=ya, maka tidak ada keperluan untuk menjalankan dsymutil secara manual atau sebagai sebahagian
sistem binaan aplikasi anda, kerana Valgrind akan menjalankannya mengikut keperluan.

Valgrind tidak akan cuba menjalankan dsymutil pada mana-mana boleh laku atau perpustakaan masuk /usr/,
/ tong /, / sbin /, / opt /, /sw/, /System/, /Library/ atau /Applications/ kerana dsymutil akan
selalu gagal dalam situasi begini. Ia gagal kedua-duanya kerana info debug untuk itu
komponen sistem pra-pasang tidak tersedia di mana-mana, dan juga kerana ia akan
memerlukan keistimewaan menulis dalam direktori tersebut.

Berhati-hati ketika menggunakan --dsymutil=ya, kerana ia akan menyebabkan .dSYM yang sedia ada
direktori untuk dipadamkan secara senyap dan dibuat semula. Juga ambil perhatian bahawa dsymutil agak
lambat, kadang-kadang berlebihan.

--max-stackframe= [lalai: 2000000]
Saiz maksimum bingkai tindanan. Jika penuding tindanan bergerak lebih daripada jumlah ini
maka Valgrind akan menganggap bahawa atur cara itu bertukar kepada timbunan yang berbeza.

Anda mungkin perlu menggunakan pilihan ini jika program anda mempunyai tatasusunan yang diperuntukkan tindanan yang besar.
Valgrind menjejaki penuding tindanan program anda. Jika ia berubah lebih daripada
amaun ambang, Valgrind menganggap program anda bertukar kepada tindanan yang berbeza, dan
Memcheck berkelakuan berbeza daripada perubahan penuding tindanan yang lebih kecil daripada
ambang. Biasanya heuristik ini berfungsi dengan baik. Walau bagaimanapun, jika program anda memperuntukkan besar
struktur pada timbunan, heuristik ini akan tertipu, dan Memcheck akan kemudiannya
laporkan sejumlah besar akses tindanan tidak sah. Pilihan ini membolehkan anda menukar
ambang kepada nilai yang berbeza.

Anda hanya perlu mempertimbangkan penggunaan pilihan ini jika output nyahpepijat Valgrind mengarahkan anda ke
berbuat demikian. Dalam kes itu ia akan memberitahu anda ambang baharu yang perlu anda tentukan.

Secara umum, memperuntukkan struktur besar pada timbunan adalah idea yang tidak baik, kerana anda boleh
mudah kehabisan ruang tindanan, terutamanya pada sistem dengan memori terhad atau yang mana
mengharapkan untuk menyokong sejumlah besar benang setiap satu dengan timbunan kecil, dan juga kerana
semakan ralat yang dilakukan oleh Memcheck adalah lebih berkesan untuk data yang diperuntukkan timbunan
daripada data yang diperuntukkan tindanan. Jika anda perlu menggunakan pilihan ini, anda mungkin mahu
pertimbangkan untuk menulis semula kod anda untuk diperuntukkan pada timbunan dan bukannya pada timbunan.

--utama-timbunan= [lalai: penggunaan semasa 'ulimit' nilai]
Menentukan saiz timbunan utas utama.

Untuk memudahkan pengurusan ingatannya, Valgrind menyimpan semua ruang yang diperlukan untuk utama
susunan benang pada permulaan. Ini bermakna ia perlu mengetahui saiz tindanan yang diperlukan di
memulakan.

Secara lalai, Valgrind menggunakan nilai "ulimit" semasa untuk saiz tindanan, atau 16 MB,
yang mana lebih rendah. Dalam kebanyakan kes ini memberikan saiz tindanan dalam julat 8 hingga 16 MB,
yang hampir tidak pernah melimpah untuk kebanyakan aplikasi.

Jika anda memerlukan jumlah saiz tindanan yang lebih besar, gunakan --saiz tindanan-utama untuk menentukannya. Tetapkan sahaja
setinggi yang anda perlukan, kerana menempah lebih banyak ruang daripada yang anda perlukan (iaitu, ratusan
daripada megabait lebih daripada yang anda perlukan) mengekang pengagih ingatan Valgrind dan mungkin
mengurangkan jumlah memori yang boleh digunakan oleh Valgrind. Ini hanya benar-benar daripada
kepentingan pada mesin 32-bit.

Di Linux, anda boleh meminta timbunan saiz sehingga 2GB. Valgrind akan berhenti dengan a
mesej diagnostik jika timbunan tidak boleh diperuntukkan.

--saiz tindanan-utama hanya mempengaruhi saiz tindanan untuk utas awal program. Ia mempunyai
tiada kesan pada saiz susunan benang, kerana Valgrind tidak memperuntukkannya.

Anda mungkin perlu menggunakan kedua-duanya --saiz tindanan-utama and --max-stackframe bersama-sama. Ia adalah
penting untuk memahaminya --saiz tindanan-utama menetapkan jumlah saiz tindanan maksimum,
sementara --max-stackframe menentukan saiz terbesar bagi mana-mana satu bingkai tindanan. Anda akan
perlu bersenam --saiz tindanan-utama nilai untuk diri sendiri (biasanya, jika anda
aplikasi segfaults). Tetapi Valgrind akan memberitahu anda perkara yang diperlukan --max-stackframe saiz,
jika perlu.

Seperti yang dibincangkan lebih lanjut dalam huraian tentang --max-stackframe, keperluan untuk yang besar
timbunan adalah tanda masalah mudah alih yang berpotensi. Anda dinasihatkan untuk meletakkan semua
data besar dalam ingatan yang diperuntukkan timbunan.

--maks-benang= [lalai: 500]
Secara lalai, Valgrind boleh mengendalikan sehingga 500 utas. Kadang-kadang, jumlah itu juga
kecil. Gunakan pilihan ini untuk memberikan had yang berbeza. Cth --maks-benang=3000.

BERKAITAN MALLOC(). PILIHAN


Untuk alatan yang menggunakan versi malloc mereka sendiri (cth Memcheck, Massif, Helgrind, DRD),
pilihan berikut dikenakan.

--penjajaran= [lalai: 8 or 16, bergantung on yang platform]
Secara lalai Valgrind's malloc, peruntukkan semula, dsb, kembalikan blok yang alamat permulaannya ialah
8-bait dijajarkan atau 16-bait dijajarkan (nilai bergantung pada platform dan sepadan dengan
lalai platform). Pilihan ini membolehkan anda menentukan penjajaran yang berbeza. The
nilai yang dibekalkan mestilah lebih besar daripada atau sama dengan lalai, kurang daripada atau sama dengan
4096, dan mestilah kuasa dua.

--saiz zon merah= [lalai: bergantung on yang alat]
milik Valgrind malloc, realloc, dll, tambahkan blok pelapik sebelum dan selepas setiap blok timbunan
diperuntukkan oleh program yang dijalankan. Blok padding sedemikian dipanggil zon merah. The
nilai lalai untuk saiz zon merah bergantung pada alat. Sebagai contoh, Memcheck menambah dan
melindungi sekurang-kurangnya 16 bait sebelum dan selepas setiap blok yang diperuntukkan oleh klien.
Ini membolehkannya mengesan underrun atau overrun blok sehingga 16 bait.

Meningkatkan saiz zon merah memungkinkan untuk mengesan larian jarak yang lebih besar,
tetapi meningkatkan jumlah memori yang digunakan oleh Valgrind. Mengurangkan saiz zon merah akan
mengurangkan memori yang diperlukan oleh Valgrind tetapi juga mengurangkan peluang untuk mengesan
over/underrun, jadi tidak digalakkan.

TIDAK BIASA PILIHAN


Pilihan ini digunakan untuk semua alatan, kerana ia mempengaruhi kerja Valgrind tertentu yang tidak jelas
teras. Kebanyakan orang tidak perlu menggunakannya.

--smc-check= [lalai: semua-bukan-fail khususnya x86/amd64/s390x,
timbunan khususnya lain gerbang]
Pilihan ini mengawal pengesanan kod ubah suai diri oleh Valgrind. Jika tiada pemeriksaan
selesai, apabila program melaksanakan beberapa kod, kemudian menimpanya dengan kod baharu, dan
melaksanakan kod baharu, Valgrind akan terus melaksanakan terjemahan yang dibuat untuknya
kod lama. Ini berkemungkinan akan membawa kepada tingkah laku yang salah dan/atau ranap sistem.

Untuk seni bina "moden" -- apa sahaja yang bukan x86, amd64 atau s390x -- lalai
is timbunan. Ini kerana program yang betul mesti mengambil tindakan yang jelas untuk mewujudkan semula
Koheren cache DI berikutan pengubahsuaian kod. Valgrind memerhati dan menghormatinya
tindakan, dengan keputusan bahawa kod pengubahsuaian sendiri dikendalikan secara telus dengan sifar
kos tambahan.

Untuk x86, amd64 dan s390x, program tidak diperlukan untuk memberitahu perkakasan tentang
penyegerakan koheren DI diperlukan. Oleh itu lalainya ialah semua-bukan-fail, yang merangkumi
kes biasa penjanaan kod ke kawasan mmap'd tanpa nama (tidak disokong fail).

Maksud empat tetapan yang tersedia adalah seperti berikut. Tiada pengesanan (tiada),
mengesan kod ubah suai sendiri pada tindanan (yang digunakan oleh GCC untuk melaksanakan nested
fungsi) (timbunan), mengesan kod ubah suai diri di mana-mana (semua), dan mengesan
kod ubah suai sendiri di mana-mana kecuali dalam pemetaan bersandarkan fail (semua-bukan-fail).

Berlari dengan semua akan memperlahankan Valgrind dengan ketara. Berlari dengan tiada jarang akan
mempercepatkan perkara, kerana sangat sedikit kod yang dijana secara dinamik dalam kebanyakan program.
. VALGRIND_DISCARD_TRANSLATIONS permintaan pelanggan adalah alternatif kepada --smc-check=semua
and --smc-check=semua-bukan-fail yang memerlukan lebih banyak usaha pengaturcara tetapi membenarkan Valgrind
untuk menjalankan program anda dengan lebih pantas, dengan memberitahunya dengan tepat apabila terjemahan perlu
dibuat semula.

--smc-check=semua-bukan-fail menyediakan versi yang lebih murah tetapi lebih terhad
--smc-check=semua. Ia menambah semakan pada mana-mana terjemahan yang tidak berasal dari
pemetaan memori bersandarkan fail. Aplikasi biasa yang menjana kod, contohnya JIT
dalam penyemak imbas web, jana kod ke kawasan mmaped tanpa nama, manakala kod "tetap".
penyemak imbas sentiasa hidup dalam pemetaan bersandarkan fail. --smc-check=semua-bukan-fail mengambil
kelebihan pemerhatian ini, mengehadkan overhed semakan kepada kod iaitu
berkemungkinan JIT dihasilkan.

--read-inline-info= [lalai: lihat di bawah]
Apabila didayakan, Valgrind akan membaca maklumat tentang panggilan fungsi sebaris daripada DWARF3
maklumat nyahpepijat. Ini melambatkan permulaan Valgrind dan menjadikannya menggunakan lebih banyak memori (biasanya untuk
setiap sekeping kod sebaris, 6 perkataan dan ruang untuk nama fungsi), tetapi ia terhasil
dalam surih tindanan yang lebih deskriptif. Untuk keluaran 3.10.0, fungsi ini didayakan
secara lalai hanya untuk sasaran Linux, Android dan Solaris dan hanya untuk alatan
Memcheck, Helgrind dan DRD. Berikut ialah contoh beberapa jejak tindanan dengan
--read-inline-info=no:

==15380== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15380== di 0x80484EA: utama (ininfo.c:6)
== 15380 ==
==15380== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15380== pada 0x8048550: fun_noninline (inlinfo.c:6)
==15380== oleh 0x804850E: utama (info.c:34)
== 15380 ==
==15380== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15380== pada 0x8048520: utama (info.c:6)

Dan berikut adalah ralat yang sama dengan --read-inline-info=ya:

==15377== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15377== di 0x80484EA: fun_d (info.c:6)
==15377== oleh 0x80484EA: fun_c (info.c:14)
==15377== oleh 0x80484EA: fun_b (info.c:20)
==15377== oleh 0x80484EA: fun_a (info.c:26)
==15377== oleh 0x80484EA: utama (ininfo.c:33)
== 15377 ==
==15377== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15377== pada 0x8048550: fun_d (info.c:6)
==15377== oleh 0x8048550: fun_noninline (inlinfo.c:41)
==15377== oleh 0x804850E: utama (info.c:34)
== 15377 ==
==15377== Lompat atau pergerakan bersyarat bergantung pada nilai yang tidak dimulakan
==15377== pada 0x8048520: fun_d (info.c:6)
==15377== oleh 0x8048520: utama (info.c:35)

--read-var-info= [lalai: tidak]
Apabila didayakan, Valgrind akan membaca maklumat tentang jenis pembolehubah dan lokasi dari
Maklumat nyahpepijat DWARF3. Ini melambatkan permulaan Valgrind dengan ketara dan menjadikannya digunakan
lebih banyak ingatan, tetapi untuk alat yang boleh memanfaatkannya (Memcheck,
Helgrind, DRD) ia boleh menghasilkan mesej ralat yang lebih tepat. Sebagai contoh, berikut adalah
beberapa ralat standard yang dikeluarkan oleh Memcheck:

==15363== Bait yang tidak dimulakan ditemui semasa permintaan semakan pelanggan
==15363== pada 0x80484A9: kuak (varinfo1.c:28)
==15363== oleh 0x8048544: utama (varinfo1.c:55)
==15363== Alamat 0x80497f7 ialah 7 bait di dalam simbol data "global_i2"
== 15363 ==
==15363== Bait yang tidak dimulakan ditemui semasa permintaan semakan pelanggan
==15363== pada 0x80484A9: kuak (varinfo1.c:28)
==15363== oleh 0x8048550: utama (varinfo1.c:56)
==15363== Alamat 0xbea0d0cc berada pada susunan urutan 1
==15363== dalam bingkai #1, dicipta oleh utama (varinfo1.c:45)

Dan berikut adalah ralat yang sama dengan --read-var-info=ya:

==15370== Bait yang tidak dimulakan ditemui semasa permintaan semakan pelanggan
==15370== pada 0x80484A9: kuak (varinfo1.c:28)
==15370== oleh 0x8048544: utama (varinfo1.c:55)
==15370== Lokasi 0x80497f7 ialah 0 bait di dalam global_i2[7],
==15370== pembolehubah global diisytiharkan di varinfo1.c:41
== 15370 ==
==15370== Bait yang tidak dimulakan ditemui semasa permintaan semakan pelanggan
==15370== pada 0x80484A9: kuak (varinfo1.c:28)
==15370== oleh 0x8048550: utama (varinfo1.c:56)
==15370== Lokasi 0xbeb4a0cc ialah 0 bait di dalam var tempatan "tempatan"
==15370== diisytiharkan di varinfo1.c:46, dalam bingkai #1 utas 1

--vgdb-poll= [lalai: 5000]
Sebagai sebahagian daripada gelung utamanya, penjadual Valgrind akan meninjau untuk menyemak sama ada aktiviti
(seperti arahan luaran atau beberapa input daripada gdb) perlu dikendalikan oleh gdbserver.
Tinjauan aktiviti ini akan dilakukan selepas menjalankan bilangan blok asas yang diberikan (atau
lebih sedikit daripada bilangan blok asas yang diberikan). Tinjauan ini agak murah jadi
nilai lalai ditetapkan agak rendah. Anda mungkin mengurangkan lagi nilai ini jika vgdb
tidak boleh menggunakan panggilan sistem ptrace untuk mengganggu Valgrind jika semua utas (kebanyakan
masa) disekat dalam panggilan sistem.

--vgdb-shadow-registers=tidak|ya [lalai: tidak]
Apabila diaktifkan, gdbserver akan mendedahkan daftar bayangan Valgrind kepada GDB. Dengan ini,
nilai daftar bayangan Valgrind boleh diperiksa atau diubah menggunakan GDB.
Mendedahkan daftar bayangan hanya berfungsi dengan GDB versi 7.1 atau lebih baru.

--vgdb-prefix= [lalai: /tmp/vgdb-pipe]
Untuk berkomunikasi dengan gdb/vgdb, Valgrind gdbserver mencipta 3 fail (2 bernama FIFO
dan fail memori kongsi mmap). Pilihan awalan mengawal direktori dan awalan
untuk penciptaan fail ini.

--run-libc-freeres= [lalai: ya]
Pilihan ini hanya berkaitan apabila menjalankan Valgrind pada Linux.

Pustaka GNU C (libc.so), yang digunakan oleh semua program, boleh memperuntukkan memori untuk
kegunaannya sendiri. Biasanya ia tidak mengganggu untuk membebaskan memori itu apabila program tamat—
tidak ada gunanya, kerana kernel Linux menuntut semula semua sumber proses apabila a
proses keluar pula, jadi ia hanya akan memperlahankan keadaan.

Pengarang glibc menyedari bahawa tingkah laku ini menyebabkan penyemak kebocoran, seperti Valgrind,
untuk melaporkan kebocoran secara palsu dalam glibc, apabila pemeriksaan kebocoran dilakukan di pintu keluar. Untuk mengelakkan
ini, mereka menyediakan rutin yang dipanggil __libc_freeres khusus untuk membuat keluaran glibc
semua memori yang telah diperuntukkan. Oleh itu, Memcheck cuba dijalankan __libc_freeres di pintu keluar.

Malangnya, dalam beberapa versi glibc yang sangat lama, __libc_freeres adalah mencukupi
buggy untuk menyebabkan kerosakan segmentasi. Ini amat ketara pada Red Hat 7.1.
Jadi pilihan ini disediakan untuk menghalang larian __libc_freeres. Sekiranya anda
program nampaknya berjalan dengan baik pada Valgrind, tetapi segfaults semasa keluar, anda mungkin mendapatinya
--run-libc-freeres=no membetulkannya, walaupun dengan kos pelaporan yang mungkin palsu
kebocoran ruang dalam libc.so.

--sim-hints=hint1,hint2,...
Hantarkan pelbagai pembayang kepada Valgrind yang mengubah sedikit gelagat simulasi dalam
cara tidak standard atau berbahaya, mungkin untuk membantu simulasi ciri pelik. Oleh
lalai tiada pembayang didayakan. Gunakan dengan berhati-hati! Petua yang diketahui pada masa ini ialah:

· lax-ioctls: Sangat longgar tentang pengendalian ioctl; satu-satunya andaian ialah saiznya
adalah betul. Tidak memerlukan penimbal penuh untuk dimulakan semasa menulis.
Tanpa ini, menggunakan beberapa pemacu peranti dengan sejumlah besar ioctl pelik
arahan menjadi sangat memenatkan.

· serasi fius: Dayakan pengendalian khas untuk panggilan sistem tertentu yang mungkin menyekat
dalam sistem fail FUSE. Ini mungkin perlu apabila menjalankan Valgrind pada a
program berbilang benang yang menggunakan satu utas untuk mengurus sistem fail FUSE dan
benang lain untuk mengakses sistem fail itu.

· membolehkan-luar: Dayakan beberapa keajaiban khas yang diperlukan apabila program dijalankan
sendiri Valgrind.

· awalan tanpa-dalam: Lumpuhkan mencetak awalan > di hadapan setiap stdout atau stderr
talian keluaran dalam Valgrind dalam dikendalikan oleh Valgrind luar. Ini berguna
semasa menjalankan ujian regresi Valgrind dalam persediaan luar/dalam. Perhatikan bahawa
awalan > akan sentiasa dicetak di hadapan barisan pengelogan nyahpepijat dalaman.

· no-nptl-pthread-stackcache: Pembayang ini hanya berkaitan apabila menjalankan Valgrind dihidupkan
Linux.

Pustaka pthread GNU glibc (libpthread.so), yang digunakan oleh program pthread,
mengekalkan cache timbunan pthread. Apabila pthread ditamatkan, memori yang digunakan
untuk timbunan pthread dan beberapa struktur data berkaitan storan tempatan benang tidak
sentiasa dikeluarkan secara langsung. Memori ini disimpan dalam cache (sehingga saiz tertentu),
dan digunakan semula jika utas baharu dimulakan.

Cache ini menyebabkan alat helgrind melaporkan beberapa keadaan perlumbaan positif palsu
ralat pada memori cache ini, kerana helgrind tidak memahami glibc dalaman
primitif penyegerakan cache. Jadi, apabila menggunakan helgrind, lumpuhkan cache
membantu mengelakkan keadaan perlumbaan positif palsu, khususnya apabila menggunakan benang
pembolehubah storan tempatan (cth pembolehubah menggunakan __benang kelayakan).

Apabila menggunakan alat memcheck, melumpuhkan cache memastikan memori yang digunakan oleh glibc
untuk mengendalikan pembolehubah __benang dilepaskan terus apabila utas ditamatkan.

Nota: Valgrind melumpuhkan cache menggunakan beberapa pengetahuan dalaman tindanan glibc
pelaksanaan cache dan dengan memeriksa maklumat nyahpepijat pthread
perpustakaan. Oleh itu, teknik ini agak rapuh dan mungkin tidak berfungsi untuk semua glibc
versi. Ini telah berjaya diuji dengan pelbagai versi glibc (cth
2.11, 2.16, 2.18) pada pelbagai platform.

· pintu longgar: (Solaris sahaja) Bersabarlah tentang pengendalian syscall pintu
deskriptor fail pintu yang tidak dikenali. Tidak memerlukan penimbal penuh adalah
dimulakan semasa menulis. Tanpa ini, program menggunakan libdoor(3LIB) kefungsian
dengan semantik proprietari sepenuhnya boleh melaporkan sejumlah besar positif palsu.

--jadual-adil= [lalai: tidak]
. --jadual adil pilihan mengawal mekanisme penguncian yang digunakan oleh Valgrind untuk bersiri
pelaksanaan benang. Mekanisme penguncian mengawal cara benang dijadualkan,
dan tetapan yang berbeza memberikan pertukaran yang berbeza antara keadilan dan prestasi. Untuk
butiran lanjut tentang skema pensirilan benang Valgrind dan kesannya terhadap
prestasi dan penjadualan benang, lihat Penjadualan dan Prestasi Berbilang Benang.

· Nilai --fair-sched=ya mengaktifkan penjadual adil. Pendek kata, jika berbilang
benang sedia untuk dijalankan, benang akan dijadualkan dalam fesyen round robin.
Mekanisme ini tidak tersedia pada semua platform atau versi Linux. Jika tidak
tersedia, menggunakan --fair-sched=ya akan menyebabkan Valgrind ditamatkan dengan ralat.

Anda mungkin mendapati tetapan ini meningkatkan responsif keseluruhan jika anda menjalankan
program berbilang benang interaktif, contohnya pelayar web, pada Valgrind.

· Nilai --fair-sched=cuba mengaktifkan penjadualan adil jika tersedia di platform.
Jika tidak, ia akan kembali secara automatik --fair-sched=tidak.

· Nilai --fair-sched=tidak mengaktifkan penjadual yang tidak menjamin keadilan
antara benang sedia untuk dijalankan, tetapi secara umum memberikan prestasi tertinggi.

--kernel-variant=variant1,variant2,...
Mengendalikan panggilan sistem dan ioctl yang timbul daripada varian kecil kernel lalai untuk
platform ini. Ini berguna untuk dijalankan pada kernel yang digodam atau dengan modul kernel
yang menyokong ioctls bukan standard, sebagai contoh. Gunakan dengan berhati-hati. Jika anda tidak
memahami apa yang pilihan ini lakukan maka anda hampir pasti tidak memerlukannya. Pada masa ini
varian yang diketahui ialah:

· bproc: menyokong sys_broc panggilan sistem pada x86. Ini adalah untuk dijalankan pada BProc,
yang merupakan varian kecil bagi Linux standard yang kadangkala digunakan untuk membina
gugusan.

· android-no-hw-tls: sesetengah versi emulator Android untuk ARM tidak menyediakan a
TLS perkakasan (keadaan thread-local) mendaftar dan Valgrind ranap semasa permulaan. guna
varian ini untuk memilih sokongan perisian untuk TLS.

· android-gpu-sgx5xx: gunakan ini untuk menyokong pengendalian ioctls proprietari untuk
Siri GPU PowerVR SGX 5XX pada peranti Android. Kegagalan untuk memilih ini tidak
menyebabkan masalah kestabilan, tetapi boleh menyebabkan Memcheck melaporkan ralat palsu selepas
program melaksanakan ioctls khusus GPU.

· android-gpu-adreno3xx: begitu juga, gunakan ini untuk menyokong pengendalian proprietari
ioctls untuk siri Qualcomm Adreno 3XX GPU pada peranti Android.

--merge-recursive-frames= [lalai: 0]
Beberapa algoritma rekursif, contohnya pelaksanaan pokok binari seimbang, mencipta
banyak jejak tindanan yang berbeza, setiap satu mengandungi kitaran panggilan. Kitaran ditakrifkan sebagai
dua nilai pembilang program yang sama dipisahkan oleh sifar atau lebih pembilang program lain
nilai. Valgrind kemudiannya boleh menggunakan banyak memori untuk menyimpan semua surih tindanan ini. Ini adalah
penggunaan memori yang lemah memandangkan surih tindanan sedemikian mengandungi berulang yang tidak menarik
panggilan rekursif dan bukannya maklumat yang lebih menarik seperti fungsi yang mempunyai
memulakan panggilan rekursif.

pilihan --merge-recursive-frames= mengarahkan Valgrind untuk mengesan dan bergabung
kitaran panggilan rekursif mempunyai saiz sehingga bingkai. Apabila kitaran sedemikian
dikesan, Valgrind merekodkan kitaran dalam surih tindanan sebagai pembilang program yang unik.

Nilai 0 (lalai) menyebabkan tiada penggabungan panggilan rekursif. Nilai 1 akan menyebabkan
timbunan jejak algoritma rekursif mudah (contohnya, pelaksanaan faktorial)
untuk runtuh. Nilai 2 biasanya diperlukan untuk meruntuhkan surih tindanan yang dihasilkan
oleh algoritma rekursif seperti pokok binari, isihan pantas, dsb. Nilai yang lebih tinggi mungkin
diperlukan untuk algoritma rekursif yang lebih kompleks.

Nota: panggilan rekursif dikesan melalui analisis nilai pembilang program. Mereka tidak
dikesan dengan melihat nama fungsi.

--num-transtab-sectors= [lalai: 6 khususnya Android platform, 16 khususnya semua yang lain]
Valgrind menterjemah dan menginstrumen kod mesin program anda dalam serpihan kecil
(blok asas). Terjemahan disimpan dalam cache terjemahan yang dibahagikan
kepada beberapa bahagian (sektor). Jika cache penuh, sektor yang mengandungi
terjemahan tertua dikosongkan dan digunakan semula. Jika terjemahan lama ini diperlukan lagi,
Valgrind mesti menterjemah semula dan instrumen semula kod mesin yang sepadan, iaitu
mahal. Jika set kerja "arahan yang dilaksanakan" bagi sesuatu program adalah besar, semakin meningkat
bilangan sektor boleh meningkatkan prestasi dengan mengurangkan bilangan
terjemahan semula diperlukan. Sektor diperuntukkan atas permintaan. Setelah diperuntukkan, sektor boleh
tidak boleh dibebaskan, dan menempati ruang yang besar, bergantung pada alat dan nilainya
of --saiz masuk-avg-transtab (kira-kira 40 MB setiap sektor untuk Memcheck). Gunakan pilihan
--stats=ya untuk mendapatkan maklumat yang tepat tentang memori yang digunakan oleh sektor dan
peruntukan dan kitar semula sektor.

--avg-transtab-entry-size= [lalai: 0, bermakna penggunaan alat disediakan lalai]
Saiz purata blok asas yang diterjemahkan. Saiz purata ini digunakan untuk mendimensi
saiz sesuatu sektor. Setiap alat menyediakan nilai lalai untuk digunakan. Jika nilai lalai ini
terlalu kecil, sektor terjemahan akan menjadi penuh terlalu cepat. Jika lalai ini
nilai terlalu besar, sebahagian besar memori sektor terjemahan tidak akan digunakan.
Ambil perhatian bahawa saiz purata terjemahan blok asas bergantung pada alat dan mungkin
bergantung pada pilihan alat. Sebagai contoh, pilihan memcheck --track-origins=ya kenaikan
saiz terjemahan blok asas. guna --saiz masuk-avg-transtab untuk menala
saiz sektor, sama ada untuk mendapatkan ingatan atau untuk mengelakkan terlalu banyak terjemahan semula.

--aspace-minaddr= [lalai: bergantung on yang platform]
Untuk mengelakkan kemungkinan konflik dengan sesetengah perpustakaan sistem, Valgrind tidak menggunakan
ruang alamat di bawah --aspace-minaddr nilai, menyimpannya dikhaskan sekiranya perpustakaan
secara khusus meminta ingatan di rantau ini. Jadi, beberapa nilai "pesimis" dapat ditebak
oleh Valgrind bergantung pada platform. Pada linux, secara lalai, Valgrind mengelak daripada menggunakan
64MB pertama walaupun biasanya tiada konflik dalam zon lengkap ini. Anda boleh gunakan
pilihannya --aspace-minaddr untuk mendapat manfaat daripada aplikasi anda yang haus ingatan
lebih banyak memori yang lebih rendah ini. Sebaliknya, jika anda menghadapi konflik, semakin meningkat
nilai aspace-minaddr mungkin menyelesaikannya. Konflik biasanya akan menjelma dengan sendirinya
kegagalan mmap dalam julat rendah ruang alamat. Alamat yang diberikan mestilah halaman
sejajar dan mestilah sama atau lebih besar dengan 0x1000 (4KB). Untuk mencari nilai lalai pada anda
platform, lakukan sesuatu seperti valgrind -d -d tarikh 2>&1 | grep -i minaddr. Nilai
lebih rendah daripada 0x10000 (64KB) diketahui menimbulkan masalah pada sesetengah pengedaran.

--valgrind-stacksize= [lalai: 1MB]
Untuk setiap utas, Valgrind memerlukan tindanan 'peribadi' sendiri. Saiz lalai untuk ini
tindanan sebahagian besarnya berdimensi, dan oleh itu sepatutnya mencukupi dalam kebanyakan kes. Dalam kes yang
saiz terlalu kecil, Valgrind akan segfault. Sebelum melakukan segfault, amaran mungkin
dihasilkan oleh Valgrind apabila menghampiri had.

Gunakan pilihan --valgrind-saiz tindanan jika amaran sedemikian (tidak mungkin) dihasilkan, atau
Valgrind meninggal dunia kerana pelanggaran segmentasi. Pelanggaran segmentasi sedemikian telah
dilihat apabila menghilangkan simbol C++ yang besar.

Jika aplikasi anda menggunakan banyak utas dan memerlukan banyak memori, anda boleh memperoleh beberapa
memori dengan mengurangkan saiz tindanan Valgrind ini menggunakan pilihan
--valgrind-saiz tindanan.

--show-emwarns= [lalai: tidak]
Apabila didayakan, Valgrind akan mengeluarkan amaran tentang emulasi CPUnya dalam kes tertentu.
Ini biasanya tidak menarik.

--require-text-symbol=:sonamepatt:fnnamepatt
Apabila objek kongsi yang sonamenya sepadan sonamepatt dimuatkan ke dalam proses,
periksa semua simbol teks yang dieksportnya. Jika tiada yang sepadan fnnamepatt, cetak an
mesej ralat dan tinggalkan larian. Ini memungkinkan untuk memastikan bahawa larian berlaku
tidak diteruskan melainkan objek kongsi yang diberikan mengandungi nama fungsi tertentu.

Kedua-dua sonamepatt and fnnamepatt boleh ditulis menggunakan biasa ? and * kad bebas. Untuk
contoh: ":*libc.so*:foo?bar". Anda boleh menggunakan aksara selain daripada titik bertindih untuk memisahkan
kedua-dua corak tersebut. Ia hanya penting bahawa watak pertama dan pemisah
watak adalah sama. Sebagai contoh, contoh di atas juga boleh ditulis
"Q*libc.so*Qfoo?bar". Pelbagai
--memerlukan-teks-simbol bendera dibenarkan, dalam hal ini berkongsi objek yang dimuatkan
ke dalam proses itu akan disemak terhadap kesemuanya.

Tujuannya adalah untuk menyokong penggunaan perpustakaan bertanda yang boleh dipercayai. Sebagai contoh,
andaikan kita mempunyai versi GCC libgomp.so yang telah ditandakan dengan
anotasi untuk menyokong Helgrind. Ia hanya terlalu mudah dan mengelirukan untuk memuatkan yang salah,
tidak beranotasi libgomp.so ke dalam aplikasi. Jadi ideanya ialah: tambah simbol teks dalam
perpustakaan bertanda, contohnya anotasi_untuk_helgrind_3_6, dan kemudian berikan bendera
--require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 supaya apabila libgomp.so
dimuatkan, Valgrind mengimbas jadual simbolnya, dan jika simbol itu tidak ada, lariannya adalah
digugurkan, dan bukannya meneruskan secara senyap dengan perpustakaan yang tidak ditandakan. Perhatikan bahawa anda
harus meletakkan seluruh bendera dalam petikan untuk menghentikan cengkerang mengembangkan * and ?
kad bebas.

--sonname-synonyms=syn1=pattern1,syn2=pattern2,...
Apabila pustaka kongsi dimuatkan, Valgrind menyemak fungsi dalam pustaka itu
mesti diganti atau dibalut. Sebagai contoh, Memcheck menggantikan semua malloc berkaitan
fungsi (malloc, percuma, calloc, ...) dengan versinya sendiri. Pengganti tersebut adalah
dilakukan secara lalai hanya dalam perpustakaan kongsi yang sonamenya sepadan dengan soname yang dipratentukan
corak (cth libc.so* pada linux). Secara lalai, tiada penggantian dilakukan untuk statik
perpustakaan terpaut atau untuk perpustakaan alternatif seperti tcmalloc. Dalam beberapa kes, yang
penggantian membenarkan --soname-sinonim untuk menentukan satu pola sinonim tambahan, memberi
fleksibiliti dalam penggantian.

Pada masa ini, fleksibiliti ini hanya dibenarkan untuk fungsi berkaitan malloc, menggunakan
sinonimnya somalloc. Sinonim ini boleh digunakan untuk semua alat yang melakukan penggantian standard
fungsi berkaitan malloc (cth memcheck, massif, drd, helgrind, exp-dhat,
exp-sgcheck).

· Pustaka malloc ganti: untuk menggantikan fungsi berkaitan malloc dalam alternatif
perpustakaan dengan soname mymalloclib.so, berikan pilihan
--soname-synonyms=somalloc=mymalloclib.so. Corak boleh digunakan untuk memadankan berbilang
perpustakaan sonames. Sebagai contoh, --soname-sinonim=somalloc=*tcmalloc* akan sesuai
soname semua varian pustaka tcmalloc (asli, nyahpepijat, berprofil, ...
varian tcmalloc).

Nota: nama perpustakaan kongsi bunian boleh diambil menggunakan readelf
utiliti.

· Penggantian dalam perpustakaan yang dipautkan secara statik dilakukan dengan menggunakan NONE .
Contohnya, jika anda memautkan dengan libtcmalloc.a, memcheck akan berfungsi dengan betul apabila anda
berikan pilihan --sonname-synonyms=somalloc=TIADA. Ambil perhatian bahawa corak NONE akan
sepadan dengan boleh laku utama dan mana-mana perpustakaan kongsi yang tidak mempunyai soname.

· Untuk menjalankan binaan Firefox "lalai" untuk Linux, di mana JEMalloc dipautkan ke dalam
boleh laku utama, gunakan --sonname-synonyms=somalloc=TIADA.

MENGHILANGKAN VALGRIND PILIHAN


Terdapat juga beberapa pilihan untuk menyahpepijat Valgrind itu sendiri. Anda tidak perlu menggunakannya
dalam keadaan biasa. Jika anda ingin melihat senarai, gunakan --help-debug pilihan.

MEMCHECK PILIHAN


--semak-bocor= [lalai: ringkasan]
Apabila didayakan, cari kebocoran memori apabila program klien selesai. Jika ditetapkan kepada
ringkasan, ia menyatakan berapa banyak kebocoran berlaku. Jika ditetapkan kepada penuh or yes, setiap individu bocor
akan ditunjukkan secara terperinci dan/atau dikira sebagai ralat, seperti yang ditentukan oleh pilihan
--tunjuk-kebocoran-jenis and --kesilapan-untuk-jenis-kebocoran.

--leak-resolution= [lalai: tinggi]
Apabila melakukan semakan kebocoran, tentukan sejauh mana Memcheck bersedia untuk mempertimbangkan berbeza
jejak belakang adalah sama untuk tujuan menggabungkan berbilang kebocoran menjadi satu
laporan kebocoran. Apabila ditetapkan kepada rendah, hanya dua penyertaan pertama yang memerlukan padanan. Bila med, empat
penyertaan perlu sepadan. Bila tinggi, semua entri perlu sepadan.

Untuk penyahpepijatan kebocoran tegar, anda mungkin mahu menggunakan --leak-resolution=tinggi bersama-sama
bersama --bilangan-pemanggil=40 atau beberapa bilangan yang begitu besar.

Ambil perhatian bahawa --leak-resolusi tetapan tidak menjejaskan keupayaan Memcheck untuk mencari
kebocoran. Ia hanya mengubah cara keputusan dibentangkan.

--tunjuk-kebocoran-jenis= [lalai: pasti, mungkin]
Menentukan jenis kebocoran untuk ditunjukkan dalam a penuh carian kebocoran, dalam salah satu cara berikut:

· senarai dipisahkan koma bagi satu atau lebih daripada pasti tidak langsung mungkin boleh dicapai.

· semua untuk menentukan set lengkap (semua jenis kebocoran). Ia bersamaan dengan
--show-leak-jenis=pasti, tidak langsung, mungkin, boleh dicapai.

· tiada untuk set kosong.

--kesilapan-untuk-jenis-kebocoran= [lalai: pasti, mungkin]
Menentukan jenis kebocoran untuk dikira sebagai ralat dalam a penuh carian bocor. The is
dinyatakan serupa dengan --tunjuk-kebocoran-jenis

--kebocoran-semak-heuristik= [lalai: semua]
Menentukan set heuristik semakan kebocoran untuk digunakan semasa carian kebocoran. The
heuristik mengawal penunjuk dalaman mana kepada blok menyebabkan ia dianggap sebagai
boleh dicapai. Set heuristik ditentukan dalam salah satu cara berikut:

· senarai dipisahkan koma bagi satu atau lebih daripada rentetan std panjang64 newarray
pewarisan berbilang.

· semua untuk mengaktifkan set lengkap heuristik. Ia bersamaan dengan
--leak-check-heuristics=stdstring,length64,newarray,multipleinheritance.

· tiada untuk set kosong.

Ambil perhatian bahawa heuristik ini bergantung pada susun atur objek yang dihasilkan oleh
Pengkompil C++. Ia telah diuji dengan beberapa versi gcc (cth 4.4 dan 4.7). mereka
mungkin tidak berfungsi dengan betul dengan penyusun C++ yang lain.

--show-reachable= , --tunjuk-mungkin-hilang=
Pilihan ini menyediakan cara alternatif untuk menentukan jenis kebocoran untuk ditunjukkan:

· --show-reachable=tidak --tunjuk-mungkin-hilang=ya adalah bersamaan dengan
--show-leak-jenis=pasti, mungkin.

· --show-reachable=tidak --tunjuk-mungkin-hilang=tidak adalah bersamaan dengan
--tunjuk-kebocoran-jenis=pasti.

· --show-reachable=ya adalah bersamaan dengan --show-leak-jenis=semua.

Perhatikan bahawa --tunjuk-mungkin-hilang=tidak tiada kesan jika --show-reachable=ya dinyatakan.

--undef-value-errors= [lalai: ya]
Mengawal sama ada Memcheck melaporkan menggunakan ralat nilai yang tidak ditentukan. Tetapkan ini kepada tidak if
anda tidak mahu melihat ralat nilai yang tidak ditentukan. Ia juga mempunyai kesan sampingan memandu laju
naik Memcheck agaknya.

--track-ogins= [lalai: tidak]
Mengawal sama ada Memcheck menjejaki asal nilai yang tidak dimulakan. Secara lalai, ia
tidak, yang bermaksud walaupun ia boleh memberitahu anda bahawa nilai yang tidak dimulakan ialah
digunakan dengan cara yang berbahaya, ia tidak dapat memberitahu anda di mana nilai yang tidak dimulakan itu datang
daripada. Ini sering menyukarkan untuk mengesan masalah akar.

Apabila ditetapkan ke yes, Memcheck menjejaki asal-usul semua nilai yang tidak dimulakan.
Kemudian, apabila ralat nilai yang tidak dimulakan dilaporkan, Memcheck akan cuba menunjukkan
asal nilai. Asal boleh menjadi salah satu daripada empat tempat berikut: blok timbunan,
peruntukan tindanan, permintaan pelanggan, atau pelbagai sumber lain (cth, panggilan ke
brk).

Untuk nilai yang tidak dimulakan yang berasal daripada blok timbunan, Memcheck menunjukkan di mana blok tersebut
telah diperuntukkan. Untuk nilai yang tidak dimulakan yang berasal daripada peruntukan tindanan, Memcheck
boleh memberitahu anda fungsi yang memperuntukkan nilai, tetapi tidak lebih daripada itu -- biasanya ia
menunjukkan kepada anda lokasi sumber pendakap pembukaan fungsi. Jadi anda sepatutnya
semak dengan teliti bahawa semua pembolehubah tempatan fungsi dimulakan dengan betul.

Overhed prestasi: penjejakan asal adalah mahal. Ia mengurangkan separuh kelajuan Memcheck dan
meningkatkan penggunaan memori sekurang-kurangnya 100MB, dan mungkin lebih. Namun begitu ia boleh
mengurangkan secara drastik usaha yang diperlukan untuk mengenal pasti punca yang tidak diketahui
ralat nilai, dan begitu juga selalunya produktiviti pengaturcara menang, walaupun berjalan lebih banyak
perlahan-lahan.

Ketepatan: Memcheck menjejaki asal dengan agak tepat. Untuk mengelakkan ruang dan masa yang sangat besar
overhed, beberapa anggaran dibuat. Ada kemungkinan, walaupun tidak mungkin, itu
Memcheck akan melaporkan asal yang salah, atau tidak dapat mengenal pasti mana-mana asal.

Perhatikan bahawa gabungan --track-origins=ya and --undef-value-errors=no is
mengarut. Memcheck menyemak dan menolak gabungan ini pada permulaan.

--beban-separa-ok= [lalai: ya]
Mengawal cara Memcheck mengendalikan beban sejajar semula jadi 32-, 64-, 128- dan 256-bit daripada
alamat yang sesetengah bait boleh dialamatkan dan yang lain tidak. Bila yes, seperti itu
beban tidak menghasilkan ralat alamat. Sebaliknya, memuatkan bait yang berasal daripada haram
alamat ditandakan sebagai tidak dimulakan, dan alamat yang sepadan dengan alamat sah adalah
dikendalikan dengan cara biasa.

Bila tidak, muatan daripada alamat yang separa tidak sah dianggap sama seperti muatan daripada
alamat tidak sah sepenuhnya: ralat alamat tidak sah dikeluarkan, dan hasilnya
bait ditandakan sebagai dimulakan.

Ambil perhatian bahawa kod yang berkelakuan dengan cara ini melanggar piawaian ISO C/C++,
dan harus dianggap rosak. Jika boleh, kod tersebut harus diperbaiki.

--pemeriksaan-takrifan-mahal= [lalai: tidak]
Mengawal sama ada Memcheck harus menggunakan lebih tepat tetapi juga lebih mahal (time
memakan) algoritma apabila menyemak ketakrifan sesuatu nilai. Tetapan lalai ialah
untuk tidak melakukannya dan ia biasanya mencukupi. Walau bagaimanapun, untuk kod yang sangat dioptimumkan
valgrind mungkin kadangkala tersilap mengadu. Menyebut valgrind dengan
--expensive-definedness-checks=ya membantu tetapi datang pada kos prestasi. Masa jalan
kemerosotan sebanyak 25% telah diperhatikan tetapi kos tambahan banyak bergantung kepada
aplikasi di tangan.

--keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|tiada [lalai:
peruntukkan dan bebas]
Kawal surih tindanan yang perlu disimpan untuk blok malloc'd dan/atau free'd.

Dengan alloc-then-free, surih tindanan direkodkan pada masa peruntukan dan dikaitkan
dengan blok. Apabila blok dibebaskan, jejak tindanan kedua direkodkan, dan ini
menggantikan surih tindanan peruntukan. Akibatnya, sebarang ralat "penggunaan selepas percuma" berkaitan
kepada blok ini hanya boleh menunjukkan surih tindanan untuk tempat blok itu dibebaskan.

Dengan peruntukkan-dan-percuma, kedua-dua peruntukan dan surih tindanan deallocation untuk blok
disimpan. Oleh itu ralat "guna selepas percuma" akan menunjukkan kedua-duanya, yang mungkin membuat ralat
lebih mudah untuk didiagnosis. Berbanding dengan alloc-then-free, tetapan ini meningkat sedikit
Penggunaan memori Valgrind sebagai blok mengandungi dua rujukan dan bukannya satu.

Dengan peruntukkan, hanya surih tindanan peruntukan direkodkan (dan dilaporkan). Dengan percuma,
hanya surih tindanan deallocation direkodkan (dan dilaporkan). Nilai-nilai ini agaknya
mengurangkan memori Valgrind dan penggunaan cpu. Mereka boleh berguna bergantung pada ralat
jenis yang anda cari dan tahap perincian yang anda perlukan untuk menganalisisnya. Untuk
contoh, jika anda hanya berminat dengan ralat kebocoran memori, ia sudah memadai untuk merekodkan
jejak timbunan peruntukan.

Dengan tiada, tiada kesan tindanan direkodkan untuk malloc dan operasi percuma. Jika anda
program memperuntukkan banyak blok dan/atau memperuntukkan/membebaskan daripada banyak timbunan yang berbeza
jejak, ini boleh mengurangkan cpu dan/atau memori yang diperlukan dengan ketara. Sudah tentu, sedikit
butiran akan dilaporkan untuk ralat yang berkaitan dengan blok timbunan.

Ambil perhatian bahawa sebaik sahaja surih tindanan direkodkan, Valgrind menyimpan surih tindanan dalam ingatan
walaupun ia tidak dirujuk oleh mana-mana blok. Beberapa program (contohnya, rekursif
algoritma) boleh menjana sejumlah besar jejak tindanan. Jika Valgrind menggunakan terlalu banyak
ingatan dalam keadaan sedemikian, anda boleh mengurangkan memori yang diperlukan dengan pilihan
--simpan-jejak tindanan dan/atau dengan menggunakan nilai yang lebih kecil untuk pilihan --bilangan pemanggil.

--senarai bebas-vol= [lalai: 20000000]
Apabila program klien melepaskan memori menggunakan percuma (dalam C) atau padam (C++), ingatan itu
tidak segera disediakan untuk peruntukan semula. Sebaliknya, ia ditandakan
tidak boleh diakses dan diletakkan dalam barisan blok yang dibebaskan. Tujuannya adalah untuk menangguhkan asalkan
mungkin titik di mana memori yang dibebaskan kembali ke dalam edaran. ini
meningkatkan peluang Memcheck akan dapat mengesan akses tidak sah kepada sekatan
untuk beberapa tempoh masa yang ketara selepas mereka dibebaskan.

Pilihan ini menentukan jumlah saiz maksimum, dalam bait, blok dalam baris gilir.
Nilai lalai ialah dua puluh juta bait. Meningkatkan ini meningkatkan jumlah keseluruhan
memori yang digunakan oleh Memcheck tetapi mungkin mengesan penggunaan blok yang dibebaskan yang tidak sah yang akan
sebaliknya tidak dapat dikesan.

--freelist-big-blocks= [lalai: 1000000]
Apabila membuat blok daripada baris gilir blok yang dibebaskan tersedia untuk peruntukan semula,
Memcheck akan mengedarkan semula blok dengan saiz yang lebih besar atau sama dengannya
--freelist-big-blok. Ini memastikan bahawa membebaskan blok besar (khususnya membebaskan
blok lebih besar daripada --senarai-bebas-vol) tidak serta-merta membawa kepada peredaran semula
semua (atau banyak) blok kecil dalam senarai percuma. Dengan kata lain, pilihan ini
meningkatkan kemungkinan untuk menemui penunjuk berjuntai untuk blok "kecil", malah
apabila blok besar dibebaskan.

Menetapkan nilai 0 bermakna semua blok diedarkan semula dalam susunan FIFO.

--workaround-gcc296-bugs= [lalai: tidak]
Apabila didayakan, anggap bahawa membaca dan menulis beberapa jarak kecil di bawah penuding tindanan
disebabkan oleh pepijat dalam GCC 2.96, dan tidak melaporkannya. "Jarak kecil" ialah 256
bait secara lalai. Ambil perhatian bahawa GCC 2.96 ialah pengkompil lalai pada beberapa Linux purba
pengedaran (RedHat 7.X) dan oleh itu anda mungkin perlu menggunakan pilihan ini. Jangan gunakannya jika
anda tidak perlu, kerana ia boleh menyebabkan kesilapan sebenar diabaikan. Alternatif yang lebih baik
ialah menggunakan GCC yang lebih terbaharu di mana pepijat ini dibetulkan.

Anda juga mungkin perlu menggunakan pilihan ini apabila bekerja dengan GCC 3.X atau 4.X pada 32-bit
PowerPC Linux. Ini kerana GCC menjana kod yang kadangkala mengakses di bawah
penuding tindanan, terutamanya untuk penukaran titik terapung ke/daripada integer. ini
adalah melanggar spesifikasi PowerPC ELF 32-bit, yang tidak membuat peruntukan untuk
lokasi di bawah penuding tindanan untuk boleh diakses.

--show-mismatched-frees= [lalai: ya]
Apabila didayakan, Memcheck menyemak bahawa blok timbunan diagihkan menggunakan fungsi yang
sepadan dengan fungsi pengagihan. Iaitu, ia mengharapkan percuma untuk digunakan untuk mengagihkan
blok yang diperuntukkan oleh malloc, memadam untuk blok yang diperuntukkan oleh baru, dan padam [] khususnya
blok yang diperuntukkan oleh baru[]. Jika ketidakpadanan dikesan, ralat dilaporkan. Ini dalam
umum penting kerana dalam sesetengah persekitaran, membebaskan dengan fungsi tidak sepadan
boleh menyebabkan kemalangan.

Walau bagaimanapun, terdapat senario di mana ketidakpadanan sedemikian tidak dapat dielakkan. Itulah apabila
pengguna menyediakan pelaksanaan bagi baru/baru[] panggilan itu malloc dan memadam/padam []
panggilan itu percuma, dan fungsi ini diselaraskan secara tidak simetri. Sebagai contoh, bayangkan
Bahawa padam [] adalah sebaris tetapi baru[] tidak. Hasilnya ialah Memcheck "melihat" semua
padam [] panggilan sebagai panggilan terus kepada percuma, walaupun apabila sumber program mengandungi no
panggilan tidak sepadan.

Ini menyebabkan banyak laporan ralat yang mengelirukan dan tidak berkaitan.
--show-mismatched-frees=tidak melumpuhkan semakan ini. Ia secara amnya tidak digalakkan
lumpuhkannya, walaupun, kerana anda mungkin terlepas ralat sebenar akibatnya.

--ignore-ranges=0xPP-0xQQ[,0xRR-0xSS]
Mana-mana julat yang disenaraikan dalam pilihan ini (dan berbilang julat boleh ditentukan, dipisahkan oleh
koma) akan diabaikan oleh semakan kebolehlamatan Memcheck.

--malloc-fill=
Mengisi blok yang diperuntukkan oleh malloc, baru, dll, tetapi bukan oleh calloc, dengan yang ditentukan
bait. Ini boleh berguna apabila cuba menghilangkan masalah kerosakan memori yang tidak jelas.
Kawasan yang diperuntukkan masih dianggap oleh Memcheck sebagai tidak ditentukan -- pilihan ini sahaja
mempengaruhi kandungannya. Perhatikan bahawa --malloc-fill tidak menjejaskan blok ingatan apabila
ia digunakan sebagai hujah kepada permintaan pelanggan VALGRIND_MEMPOOL_ALLOC atau
VALGRIND_MALLOCLIKE_BLOCK.

--free-fill=
Mengisi blok yang dibebaskan oleh percuma, padam, dsb, dengan nilai bait yang ditentukan. Ini boleh jadi
berguna apabila cuba menghilangkan masalah kerosakan memori yang tidak jelas. Kawasan yang dibebaskan ialah
masih dianggap oleh Memcheck sebagai tidak sah untuk akses -- pilihan ini hanya mempengaruhinya
kandungan. Perhatikan bahawa --isi percuma tidak menjejaskan blok ingatan apabila ia digunakan sebagai
argumen kepada permintaan pelanggan VALGRIND_MEMPOOL_FREE atau VALGRIND_FREELIKE_BLOCK.

CACHEGRIND PILIHAN


--I1= , , saiz>
Nyatakan saiz, perkaitan dan saiz baris cache arahan tahap 1.

--D1= , , saiz>
Nyatakan saiz, perkaitan dan saiz baris bagi cache data tahap 1.

--LL= , , saiz>
Tentukan saiz, perkaitan dan saiz baris bagi cache peringkat terakhir.

--cache-sim=no|ya [ya]
Mendayakan atau melumpuhkan pengumpulan akses cache dan kiraan terlepas.

--branch-sim=tidak|ya [tidak]
Mendayakan atau melumpuhkan pengumpulan arahan cawangan dan kiraan salah ramal. Oleh
lalai ini dilumpuhkan kerana ia memperlahankan Cachegrind sebanyak kira-kira 25%. Perhatikan bahawa
anda tidak boleh nyatakan --cache-sim=tidak and --cawangan-sim=no bersama-sama, kerana itu akan pergi
Cachegrind tanpa maklumat untuk dikumpulkan.

--cachegrind-out-file=
Tulis data profil ke fail dan bukannya fail output lalai,
cachegrind.out. . The %p and %q penentu format boleh digunakan untuk membenamkan proses
ID dan/atau kandungan pembolehubah persekitaran dalam nama, seperti yang berlaku untuk
pilihan teras --fail log.

CALLGRIND PILIHAN


--callgrind-out-file=
Tulis data profil ke fail dan bukannya fail output lalai,
callgrind.out. . The %p and %q penentu format boleh digunakan untuk membenamkan proses
ID dan/atau kandungan pembolehubah persekitaran dalam nama, seperti yang berlaku untuk
pilihan teras --fail log. Apabila beberapa pembuangan dibuat, nama fail diubah suai
selanjutnya; lihat di bawah.

--dump-line= [lalai: ya]
Ini menyatakan bahawa pengiraan peristiwa harus dilakukan pada butiran baris sumber.
Ini membenarkan anotasi sumber untuk sumber yang disusun dengan maklumat nyahpepijat
(-g).

--dump-instr= [lalai: tidak]
Ini menyatakan bahawa pengiraan peristiwa harus dilakukan pada butiran setiap arahan.
Ini membenarkan anotasi kod pemasangan. Pada masa ini keputusan hanya boleh dipaparkan
oleh KCachegrind.

--compress-strings= [lalai: ya]
Pilihan ini mempengaruhi format output data profil. Ia menentukan sama ada
rentetan (nama fail dan fungsi) harus dikenal pasti dengan nombor. Ini mengecutkan
fail, tetapi menjadikannya lebih sukar bagi manusia untuk membaca (yang tidak disyorkan dalam mana-mana
kes).

--compress-pos= [lalai: ya]
Pilihan ini mempengaruhi format output data profil. Ia menentukan sama ada
kedudukan berangka sentiasa dinyatakan sebagai nilai mutlak atau dibenarkan
berbanding nombor sebelumnya. Ini mengecilkan saiz fail.

--combine-dumps= [lalai: tidak]
Apabila didayakan, apabila berbilang bahagian data profil akan dijana bahagian ini
dilampirkan pada fail output yang sama. Tidak digalakkan.

--buang-setiap-bb= [lalai: 0, tidak pernah]
Buang data profil setiap mengira blok asas. Sama ada pelupusan diperlukan hanya diperiksa
apabila penjadual dalaman Valgrind dijalankan. Oleh itu, tetapan minimum yang berguna ialah
kira-kira 100000. Kiraan ialah nilai 64-bit untuk membolehkan tempoh pembuangan yang panjang.

--dump-before=
Buang bila masuk fungsi.

--sifar-sebelum=
Sifar semua kos apabila masuk fungsi.

--buang-selepas=
Buang apabila keluar fungsi.

--instr-atstart= [lalai: ya]
Tentukan jika anda mahu Callgrind memulakan simulasi dan pemprofilan dari awal
program yang. Apabila ditetapkan kepada tidak, Callgrind tidak akan dapat mengumpul sebarang maklumat,
termasuk panggilan, tetapi ia akan mempunyai paling banyak kelembapan sekitar 4, iaitu minimum
Valgrind atas kepala. Instrumentasi boleh didayakan secara interaktif melalui callgrind_control
-saya pada.

Ambil perhatian bahawa graf panggilan yang terhasil kemungkinan besar tidak akan mengandungi utama, tetapi akan
mengandungi semua fungsi yang dilaksanakan selepas instrumentasi didayakan. Instrumentasi
juga boleh didayakan/dilumpuhkan secara terprogram. Lihat Callgrind sertakan fail callgrind.h
untuk makro yang anda perlu gunakan dalam kod sumber anda.

Untuk simulasi cache, keputusan akan menjadi kurang tepat apabila menghidupkan instrumentasi
kemudian dalam program dijalankan, kerana simulator bermula dengan cache kosong pada masa itu.
Hidupkan pengumpulan acara kemudian untuk mengatasi ralat ini.

--collect-atstart= [lalai: ya]
Tentukan sama ada pengumpulan acara didayakan pada permulaan profil dijalankan.

Untuk hanya melihat bahagian program anda, anda mempunyai dua kemungkinan:

1. Sifar pembilang acara sebelum memasuki bahagian program yang anda ingin profilkan, dan buang
acara itu membalas kepada fail selepas meninggalkan bahagian program itu.

2. Hidupkan/matikan keadaan pengumpulan seperti yang diperlukan untuk hanya melihat pembilang acara berlaku
semasa di dalam bahagian program yang anda ingin profilkan.

Pilihan kedua boleh digunakan jika bahagian program yang anda ingin profilkan dipanggil banyak
kali. Pilihan 1, iaitu mencipta banyak tempat pembuangan sampah tidak praktikal di sini.

Keadaan koleksi boleh ditogol semasa masuk dan keluar fungsi tertentu dengan pilihan
--togol-kumpul. Jika anda menggunakan pilihan ini, keadaan pengumpulan harus dilumpuhkan di
permulaan. Perhatikan bahawa spesifikasi bagi --togol-kumpul secara tersirat menetapkan
--collect-state=tidak.

Keadaan koleksi boleh ditukar juga dengan memasukkan permintaan pelanggan
CALLGRIND_TOGGLE_COLLECT ; pada kedudukan kod yang diperlukan.

--toggle-collect=
Togol koleksi semasa masuk/keluar daripada fungsi.

--kumpul-lompat= [lalai: tidak]
Ini menentukan sama ada maklumat untuk lompatan (bersyarat) perlu dikumpulkan. Sebagai
di atas, callgrind_annotate pada masa ini tidak dapat menunjukkan data kepada anda. Awak kena guna
KCachegrind untuk mendapatkan anak panah lompat dalam kod beranotasi.

--collect-systime= [lalai: tidak]
Ini menentukan sama ada maklumat untuk masa panggilan sistem perlu dikumpul.

--kumpul-bas= [lalai: tidak]
Ini menentukan sama ada bilangan acara bas global yang dilaksanakan perlu dikumpulkan.
Jenis acara "Ge" digunakan untuk acara ini.

--cache-sim= [lalai: tidak]
Tentukan jika anda ingin melakukan simulasi cache penuh. Secara lalai, hanya arahan dibaca
akses akan dikira ("Ir"). Dengan simulasi cache, kaunter acara selanjutnya adalah
didayakan: Cache terlepas pada bacaan arahan ("I1mr"/"ILmr"), akses bacaan data ("Dr")
dan kehilangan cache yang berkaitan ("D1mr"/"DLmr"), akses menulis data ("Dw") dan cache yang berkaitan
terlepas ("D1mw"/"DLmw"). Untuk maklumat lanjut, lihat Cachegrind: cache dan branch-
pemprofil ramalan.

--cawangan-sim= [lalai: tidak]
Tentukan jika anda ingin melakukan simulasi ramalan cawangan. Kaunter acara selanjutnya ialah
didayakan: Bilangan cawangan bersyarat yang dilaksanakan dan tersasar peramal yang berkaitan
("Bc"/"Bcm"), melaksanakan lompatan tidak langsung dan tersasar berkaitan peramal alamat lompatan
("Bi"/"Bim").

HELGRIND PILIHAN


--free-is-write=no|ya [lalai: tidak]
Apabila didayakan (bukan lalai), Helgrind menganggap pembebasan memori timbunan seolah-olah
memori ditulis serta-merta sebelum percuma. Ini mendedahkan kaum di mana memori berada
dirujuk oleh satu utas, dan dibebaskan oleh yang lain, tetapi tidak ada yang boleh diperhatikan
acara penyegerakan untuk memastikan rujukan berlaku sebelum percuma.

Fungsi ini baharu dalam Valgrind 3.7.0, dan dianggap sebagai percubaan. Ia adalah
tidak didayakan secara lalai kerana interaksinya dengan pengagih memori tersuai tidak
difahami dengan baik pada masa ini. Maklum balas pengguna dialu-alukan.

--track-lockorders=tidak|ya [lalai: ya]
Apabila didayakan (lalai), Helgrind melakukan semakan konsistensi pesanan kunci. Untuk
beberapa program buggy, bilangan besar ralat pesanan kunci yang dilaporkan boleh menjadi
menjengkelkan, terutamanya jika anda hanya berminat dengan ralat perlumbaan. Oleh itu, anda boleh
mendapati ia berguna untuk melumpuhkan semakan pesanan kunci.

--history-level=tiada|lebih kurang|penuh [lalai: penuh]
--peringkat-sejarah=penuh (lalai) menyebabkan Helgrind mengumpul maklumat yang mencukupi tentang
akses "lama" bahawa ia boleh menghasilkan dua jejak tindanan dalam laporan perlumbaan -- kedua-dua tindanan
jejak untuk akses semasa, dan jejak untuk akses yang lebih lama dan bercanggah. Kepada
hadkan penggunaan memori, akses "lama" surih tindanan dihadkan kepada maksimum 8 entri,
walaupun --bilangan pemanggil nilai lebih besar.

Mengumpul maklumat sedemikian adalah mahal dalam kedua-dua kelajuan dan memori, terutamanya untuk
program yang melakukan banyak peristiwa penyegerakan antara benang (kunci, buka kunci, dsb.).
Tanpa maklumat sedemikian, adalah lebih sukar untuk mengesan punca kaum.
Walau bagaimanapun, anda mungkin tidak memerlukannya dalam situasi di mana anda hanya ingin menyemaknya
kehadiran atau ketiadaan perlumbaan, contohnya, semasa melakukan ujian regresi a
program tanpa perlumbaan sebelum ini.

--peringkat-sejarah=tiada adalah ekstrem yang bertentangan. Ia menyebabkan Helgrind tidak mengumpul apa-apa
maklumat tentang capaian sebelumnya. Ini boleh menjadi lebih cepat daripada
--peringkat-sejarah=penuh.

--peringkat-sejarah=lebih kurang memberikan kompromi antara kedua-dua ekstrem ini. Ia menyebabkan
Helgrind untuk menunjukkan jejak penuh untuk akses kemudian, dan maklumat anggaran
mengenai akses yang lebih awal. Maklumat anggaran ini terdiri daripada dua tindanan, dan
capaian awal dijamin telah berlaku di suatu tempat di antara titik program
dilambangkan dengan dua timbunan. Ini tidak berguna seperti menunjukkan tindanan yang tepat untuk
akses sebelumnya (seperti --peringkat-sejarah=penuh lakukan), tetapi ia lebih baik daripada tiada, dan ia
hampir sepantas --peringkat-sejarah=tiada.

--conflict-cache-size=N [lalai: 1000000]
Bendera ini hanya mempunyai sebarang kesan pada --peringkat-sejarah=penuh.

Maklumat tentang akses bercanggah "lama" disimpan dalam cache saiz terhad,
dengan pengurusan ala LRU. Ini perlu kerana tidak praktikal untuk menyimpan a
surih tindanan untuk setiap capaian memori tunggal yang dibuat oleh program. Maklumat sejarah
pada lokasi yang tidak diakses baru-baru ini dibuang secara berkala, untuk mengosongkan ruang dalam
cache.

Pilihan ini mengawal saiz cache, dari segi bilangan memori yang berbeza
alamat yang maklumat capaian bercanggah disimpan. Jika anda mendapati itu
Helgrind menunjukkan kesilapan perlumbaan dengan hanya satu timbunan dan bukannya dua yang dijangkakan
tindanan, cuba tingkatkan nilai ini.

Nilai minimum ialah 10,000 dan maksimum ialah 30,000,000 (tiga puluh kali nilai lalai
nilai). Meningkatkan nilai sebanyak 1 meningkatkan keperluan ingatan Helgrind dengan sangat
kira-kira 100 bait, jadi nilai maksimum akan memakan tiga gigabait tambahan atau lebih dengan mudah
ingatan.

--check-stack-refs=no|ya [lalai: ya]
Secara lalai Helgrind menyemak semua akses memori data yang dibuat oleh program anda. Bendera ini
membolehkan anda melangkau menyemak akses kepada susunan benang (pembolehubah tempatan). Ini boleh
meningkatkan prestasi, tetapi datang pada kos perlumbaan yang hilang pada data yang diperuntukkan tindanan.

--abaikan-benang-penciptaan= [lalai: tidak]
Mengawal sama ada semua aktiviti semasa penciptaan benang harus diabaikan. Secara lalai
didayakan hanya pada Solaris. Solaris menyediakan daya pemprosesan yang lebih tinggi, selari dan
kebolehskalaan daripada sistem pengendalian lain, dengan kos penguncian yang lebih halus
aktiviti. Ini bermakna sebagai contoh bahawa apabila thread dicipta di bawah glibc, hanya satu
kunci besar digunakan untuk semua persediaan benang. Solaris libc menggunakan beberapa kunci berbutir halus
dan urutan pencipta menyambung semula aktivitinya secepat mungkin, meninggalkan sebagai contoh
timbunan dan urutan persediaan TLS ke benang yang dibuat. Keadaan ini mengelirukan Helgrind
kerana ia menganggap terdapat beberapa susunan palsu antara pencipta dan dicipta
benang; dan oleh itu banyak jenis keadaan perlumbaan dalam permohonan itu tidak akan
dilaporkan. Untuk mengelakkan pesanan palsu sedemikian, pilihan baris arahan ini ditetapkan kepada ya oleh
lalai pada Solaris. Oleh itu, semua aktiviti (muatan, stor, permintaan pelanggan) diabaikan
semasa:

· pthread_create() panggilan dalam urutan pencipta

· fasa penciptaan benang (penyediaan tindanan dan TLS) dalam benang yang dibuat

Juga ingatan baharu yang diperuntukkan semasa penciptaan benang tidak dikesan, iaitu pelaporan perlumbaan
ditindas di sana. DRD melakukan perkara yang sama secara tersirat. Ini perlu kerana
Solaris libc menyimpan banyak objek dan menggunakannya semula untuk urutan yang berbeza dan sebagainya
mengelirukan Helgrind.

DRD PILIHAN


--check-stack-var= [lalai: tidak]
Mengawal sama ada DRD mengesan perlumbaan data pada pembolehubah tindanan. Mengesahkan pembolehubah tindanan
dilumpuhkan secara lalai kerana kebanyakan program tidak berkongsi pembolehubah tindanan
benang.

--exclusive-threshold= [lalai: dimatikan]
Cetak mesej ralat jika sebarang mutex atau kunci penulis telah dipegang lebih lama daripada masa
dinyatakan dalam milisaat. Pilihan ini membolehkan pengesanan pertikaian kunci.

--join-list-vol= [lalai: 10]
Perlumbaan data yang berlaku antara pernyataan pada penghujung satu utas dan urutan lain
boleh terlepas jika maklumat capaian memori dibuang serta-merta selepas benang telah
telah disertai. Pilihan ini membenarkan seseorang untuk menentukan berapa banyak memori benang yang dicantumkan
maklumat capaian hendaklah dikekalkan.

--perlumbaan-pertama sahaja= [lalai: tidak]
Sama ada untuk melaporkan hanya perlumbaan data pertama yang telah dikesan pada lokasi memori
atau semua perlumbaan data yang telah dikesan pada lokasi memori.

--free-is-write= [lalai: tidak]
Sama ada untuk melaporkan perlumbaan antara mengakses memori dan membebaskan memori. Mendayakan ini
pilihan boleh menyebabkan DRD berjalan perlahan sedikit. Nota:

· Jangan dayakan pilihan ini apabila menggunakan pengagih memori tersuai yang menggunakan
VG_USERREQ__MALLOCLIKE_BLOCK dan VG_USERREQ__FREELIKE_BLOCK kerana itu akan
mengakibatkan positif palsu.

· Jangan dayakan pilihan ini apabila menggunakan objek yang dikira rujukan kerana itu akan
menghasilkan positif palsu, walaupun apabila kod tersebut telah dianotasi dengan betul
ANNOTATE_HAPPENS_BEFORE dan ANNOTATE_HAPPENS_AFTER. Lihat cth output daripada
arahan berikut sebagai contoh: valgrind --tool=drd --free-is-write=yes
drd/tests/annotate_smart_pointer.

--report-signal-unlocked= [lalai: ya]
Sama ada untuk melaporkan panggilan ke pthread_cond_signal and pthread_cond_broadcast Dimanakah
mutex yang dikaitkan dengan isyarat melalui pthread_cond_wait or
pthread_cond_timed_waittidak dikunci pada masa isyarat dihantar. Menghantar isyarat
tanpa memegang kunci pada mutex yang berkaitan adalah ralat pengaturcaraan biasa yang boleh
menyebabkan keadaan kaum halus dan tingkah laku yang tidak dapat diramalkan. Terdapat beberapa yang tidak biasa
corak penyegerakan walau bagaimanapun di mana ia adalah selamat untuk menghantar isyarat tanpa memegang a
kunci pada mutex yang berkaitan.

--penggabungan-segmen= [lalai: ya]
Mengawal penggabungan segmen. Penggabungan segmen ialah algoritma untuk mengehadkan penggunaan memori bagi
algoritma pengesanan perlumbaan data. Melumpuhkan penggabungan segmen boleh meningkatkan ketepatan
apa yang dipanggil 'segmen lain' dipaparkan dalam laporan perlumbaan tetapi juga boleh mencetuskan keluar
daripada ralat ingatan.

--segmen-mencantum-selang= [lalai: 10]
Lakukan penggabungan segmen hanya selepas bilangan segmen baharu yang ditetapkan telah
dicipta. Ini ialah pilihan konfigurasi lanjutan yang membolehkan seseorang memilih sama ada untuk
meminimumkan penggunaan memori DRD dengan memilih nilai yang rendah atau membiarkan DRD berjalan dengan lebih pantas
memilih nilai yang lebih tinggi sedikit. Nilai optimum untuk parameter ini bergantung pada
program yang sedang dianalisis. Nilai lalai berfungsi dengan baik untuk kebanyakan program.

--shared-threshold= [lalai: dimatikan]
Cetak mesej ralat jika kunci pembaca telah dipegang lebih lama daripada masa yang ditentukan
(dalam milisaat). Pilihan ini membolehkan pengesanan pertikaian kunci.

--show-confl-seg= [lalai: ya]
Tunjukkan segmen yang bercanggah dalam laporan perlumbaan. Memandangkan maklumat ini boleh membantu mencari
punca perlumbaan data, pilihan ini didayakan secara lalai. Melumpuhkan pilihan ini membuat
keluaran DRD lebih padat.

--show-stack-usage= [lalai: tidak]
Cetak penggunaan tindanan pada masa keluar benang. Apabila program mencipta sejumlah besar
benang menjadi penting untuk mengehadkan jumlah memori maya yang diperuntukkan
susunan benang. Pilihan ini memungkinkan untuk memerhatikan jumlah memori tindanan
digunakan oleh setiap urutan program klien. Nota: alat DRD itu sendiri memperuntukkan beberapa
data sementara pada susunan benang klien. Ruang yang diperlukan untuk data sementara ini
mesti diperuntukkan oleh program klien apabila ia memperuntukkan memori tindanan, tetapi tidak
termasuk dalam penggunaan tindanan yang dilaporkan oleh DRD.

--abaikan-benang-penciptaan= [lalai: tidak]
Mengawal sama ada semua aktiviti semasa penciptaan benang harus diabaikan. Secara lalai
didayakan hanya pada Solaris. Solaris menyediakan daya pemprosesan yang lebih tinggi, selari dan
kebolehskalaan daripada sistem pengendalian lain, dengan kos penguncian yang lebih halus
aktiviti. Ini bermakna sebagai contoh bahawa apabila thread dicipta di bawah glibc, hanya satu
kunci besar digunakan untuk semua persediaan benang. Solaris libc menggunakan beberapa kunci berbutir halus
dan urutan pencipta menyambung semula aktivitinya secepat mungkin, meninggalkan sebagai contoh
susunan tindanan dan TLS ke urutan yang dibuat. Keadaan ini mengelirukan DRD kerana ia
mengandaikan terdapat beberapa susunan palsu antara pencipta dan benang yang dicipta; dan
oleh itu banyak jenis keadaan perlumbaan dalam aplikasi tidak akan dilaporkan. Kepada
mengelakkan pesanan palsu sedemikian, pilihan baris arahan ini ditetapkan kepada ya secara lalai pada
Solaris. Oleh itu, semua aktiviti (muatan, stor, permintaan pelanggan) diabaikan semasa:

· pthread_create() panggilan dalam urutan pencipta

· fasa penciptaan benang (penyediaan tindanan dan TLS) dalam benang yang dibuat

--trace-addr= [lalai: tiada]
Jejaki semua aktiviti muat dan simpan untuk alamat yang ditentukan. Pilihan ini mungkin
dinyatakan lebih daripada sekali.

--ptrace-addr= [lalai: tiada]
Jejaki semua aktiviti muat dan simpan untuk alamat yang ditentukan dan teruskan melakukannya walaupun
selepas memori di alamat itu telah dibebaskan dan diperuntukkan semula.

--trace-alloc= [lalai: tidak]
Jejaki semua peruntukan memori dan deallokasi. Boleh menghasilkan sejumlah besar output.

--penghalang-jejak= [lalai: tidak]
Jejaki semua aktiviti penghalang.

--trace-cond= [lalai: tidak]
Jejaki semua aktiviti pembolehubah keadaan.

--trace-fork-join= [lalai: tidak]
Jejaki semua penciptaan benang dan semua peristiwa penamatan benang.

--trace-hb= [lalai: tidak]
Jejaki pelaksanaan ANNOTATE_HAPPENS_BEFORE(), ANNOTATE_HAPPENS_AFTER() dan
ANNOTATE_HAPPENS_DONE() permintaan pelanggan.

--trace-mutex= [lalai: tidak]
Jejaki semua aktiviti mutex.

--trace-rwlock= [lalai: tidak]
Jejaki semua aktiviti kunci pembaca-penulis.

--trace-semaphore= [lalai: tidak]
Jejaki semua aktiviti semaphore.

MASSIF PILIHAN


--timbunan= [lalai: ya]
Menentukan sama ada pemprofilan timbunan perlu dilakukan.

--heap-admin= [lalai: 8]
Jika pemprofilan timbunan didayakan, berikan bilangan bait pentadbiran bagi setiap blok
guna. Ini sepatutnya anggaran purata, kerana ia mungkin berbeza-beza. Sebagai contoh, yang
pengagih yang digunakan oleh glibc di Linux memerlukan antara 4 hingga 15 bait setiap blok,
bergantung kepada pelbagai faktor. Pengagih itu juga memerlukan ruang pentadbir untuk dibebaskan
blok, tetapi Massif tidak dapat menjelaskan perkara ini.

--timbunan= [lalai: tidak]
Menentukan sama ada pemprofilan tindanan perlu dilakukan. Pilihan ini memperlahankan Massif
sangat, dan sebagainya dimatikan secara lalai. Ambil perhatian bahawa Massif menganggap bahawa timbunan utama mempunyai
saiz sifar pada permulaan. Ini tidak benar, tetapi melakukan sebaliknya dengan tepat adalah sukar.
Tambahan pula, bermula pada sifar lebih baik menunjukkan saiz bahagian timbunan utama
bahawa program pengguna sebenarnya mempunyai kawalan ke atas.

--pages-as-heap= [lalai: tidak]
Memberitahu Massif untuk memprofilkan memori pada peringkat halaman dan bukannya pada blok malloc'd
tahap. Lihat di atas untuk butiran.

--depth= [lalai: 30]
Kedalaman maksimum pepohon peruntukan yang direkodkan untuk syot kilat terperinci. Meningkatkannya
akan menjadikan Massif berjalan agak perlahan, menggunakan lebih banyak memori dan menghasilkan output yang lebih besar
fail.

--alloc-fn=
Fungsi yang ditentukan dengan pilihan ini akan dianggap seolah-olah ia adalah timbunan
fungsi peruntukan seperti malloc. Ini berguna untuk fungsi yang menjadi pembalut
malloc or baru, yang boleh mengisi pokok peruntukan dengan maklumat yang tidak menarik.
Pilihan ini boleh ditentukan beberapa kali pada baris arahan, untuk menamakan berbilang
fungsi.

Ambil perhatian bahawa fungsi yang dinamakan hanya akan dilayan dengan cara ini jika ia adalah entri teratas dalam a
surih tindanan, atau betul-betul di bawah fungsi lain yang dirawat dengan cara ini. Sebagai contoh, jika anda mempunyai
satu fungsi malloc1 yang membungkus malloc, dan malloc2 yang membungkus malloc1, hanya menyatakan
--alloc-fn=malloc2 tidak akan memberi kesan. Anda perlu nyatakan --alloc-fn=malloc1 as
baiklah. Ini sedikit menyusahkan, tetapi sebabnya ialah menyemak peruntukan
fungsi adalah perlahan, dan ia menjimatkan banyak masa jika Massif boleh berhenti melihat melalui
susun entri jejak sebaik sahaja ia menemui satu yang tidak sepadan dan bukannya perlu
teruskan melalui semua penyertaan.

Ambil perhatian bahawa nama C++ dimusnahkan. Ambil perhatian juga bahawa nama C++ yang berlebihan mesti ditulis
sepenuhnya. Petikan tunggal mungkin diperlukan untuk mengelakkan shell daripada memecahkannya.
Sebagai contoh:

--alloc-fn='operator new(unsigned, std::nothrow_t const&)'

--abaikan-fn=
Sebarang peruntukan timbunan langsung (iaitu panggilan ke malloc, baru, dsb, atau panggilan ke fungsi
dinamakan oleh an --alloc-fn pilihan) yang berlaku dalam fungsi yang ditentukan oleh pilihan ini akan
diabaikan. Ini kebanyakannya berguna untuk tujuan ujian. Pilihan ini boleh ditentukan
beberapa kali pada baris arahan, untuk menamakan berbilang fungsi.

Mana-mana peruntukkan semula daripada blok yang diabaikan juga akan diabaikan, walaupun jika peruntukkan semula panggilan tidak
tidak berlaku dalam fungsi yang diabaikan. Ini mengelakkan kemungkinan saiz timbunan negatif
jika blok yang diabaikan dikecilkan dengan peruntukkan semula.

Peraturan untuk menulis nama fungsi C++ adalah sama seperti untuk --alloc-fn atas.

--ambang = [lalai: 1.0]
Ambang kepentingan untuk peruntukan timbunan, sebagai peratusan jumlah saiz memori.
Entri pepohon peruntukan yang menyumbang kurang daripada ini akan diagregatkan. Perhatikan bahawa
ini harus dinyatakan seiring dengan pilihan ms_print dengan nama yang sama.

--ketidaktepatan-puncak= [lalai: 1.0]
Massif tidak semestinya merekodkan puncak peruntukan memori global sebenar; oleh
lalai ia merekodkan puncak hanya apabila saiz peruntukan memori global melebihi saiz
puncak sebelumnya sekurang-kurangnya 1.0%. Ini kerana peruntukan tempatan boleh banyak
memuncak di sepanjang jalan, dan melakukan syot kilat terperinci untuk setiap satu adalah mahal
dan membazir, kerana semua kecuali satu daripadanya akan dibuang kemudian. Ketidaktepatan ini boleh jadi
berubah (malah kepada 0.0%) melalui pilihan ini, tetapi Massif akan berjalan secara drastik lebih perlahan sebagai
nombor menghampiri sifar.

--unit masa= [lalai: i]
Unit masa yang digunakan untuk pemprofilan. Terdapat tiga kemungkinan: arahan
dilaksanakan (i), yang baik untuk kebanyakan kes; masa sebenar (jam dinding) (ms, ie
milisaat), yang kadangkala berguna; dan bait diperuntukkan/diuntukkan pada timbunan
dan/atau tindanan (B), yang berguna untuk program jangka pendek dan untuk ujian
tujuan, kerana ia adalah yang paling boleh dihasilkan di mesin yang berbeza.

--detail-freq= [lalai: 10]
Kekerapan syot kilat terperinci. Dengan --detail-freq=1, setiap syot kilat diperincikan.

--maks-snapshot= [lalai: 100]
Bilangan maksimum syot kilat yang direkodkan. Jika ditetapkan kepada N, untuk semua program kecuali sangat
yang jangka pendek, bilangan akhir syot kilat adalah antara N/2 dan N.

--massif-out-file= [lalai: massif.out.%p]
Tulis data profil ke fail dan bukannya fail output lalai,
massif.out. . The %p and %q penentu format boleh digunakan untuk membenamkan ID proses
dan/atau kandungan pembolehubah persekitaran dalam nama, seperti yang berlaku untuk
pilihan teras --fail log.

SGCHECK PILIHAN


Tiada pilihan baris arahan khusus SGCheck pada masa ini.

BBV PILIHAN


--bb-out-file= [lalai: bb.out.%p]
Pilihan ini memilih nama fail vektor blok asas. The %p and %q format
penentu boleh digunakan untuk membenamkan ID proses dan/atau kandungan persekitaran
pembolehubah dalam nama, seperti yang berlaku untuk pilihan teras --fail log.

--pc-out-file= [lalai: pc.out.%p]
Pilihan ini memilih nama fail PC. Fail ini menyimpan alamat kaunter program
dan maklumat nama fungsi untuk pelbagai blok asas. Ini boleh digunakan bersama
dengan fail vektor blok asas untuk memajukan pantas melalui nama fungsi dan bukannya sekadar
arahan dikira. The %p and %q penentu format boleh digunakan untuk membenamkan proses
ID dan/atau kandungan pembolehubah persekitaran dalam nama, seperti yang berlaku untuk
pilihan teras --fail log.

--saiz selang= [lalai: 100000000]
Pilihan ini memilih saiz selang untuk digunakan. Lalai ialah 100 juta
arahan, yang merupakan nilai yang biasa digunakan. Saiz lain boleh digunakan; lebih kecil
selang boleh membantu program dengan fasa yang lebih halus. Walau bagaimanapun saiz selang yang lebih kecil
boleh membawa kepada isu ketepatan akibat kesan pemanasan (Apabila memajukan pantas pelbagai
ciri seni bina tidak akan dimulakan, dan ia akan mengambil masa beberapa
arahan sebelum mereka "memanaskan badan" ke keadaan simulasi penuh akan dilakukan tanpa
yang memajukan pantas. Saiz selang yang besar cenderung untuk mengurangkan ini.)

--instr-count-only [lalai: tidak]
Pilihan ini memberitahu alat untuk hanya memaparkan jumlah kiraan arahan, dan tidak
jana fail vektor blok asas sebenar. Ini berguna untuk penyahpepijatan, dan untuk
mengumpulkan maklumat kiraan arahan tanpa menghasilkan vektor blok asas yang besar
fail.

LACkey PILIHAN


--bilangan-asas= [lalai: ya]
Apabila didayakan, Lackey mencetak statistik dan maklumat berikut tentang
pelaksanaan program klien:

1. Bilangan panggilan ke fungsi yang ditentukan oleh --fnname pilihan (lalai
adalah utama). Jika program telah dilucutkan simbolnya, kiraan akan sentiasa
sifar.

2. Bilangan cawangan bersyarat yang ditemui dan bilangan dan bahagian
yang diambil.

3. Bilangan superblock yang dimasukkan dan dilengkapkan oleh program. Perhatikan bahawa disebabkan oleh
pengoptimuman yang dilakukan oleh JIT, ini sama sekali bukan nilai yang tepat.

4. Bilangan tetamu (x86, amd64, ppc, dsb.) arahan dan penyata IR
dilaksanakan. IR ialah perwakilan perantaraan seperti RISC Valgrind yang melaluinya semua
instrumentasi dilakukan.

5. Nisbah antara beberapa kiraan ini.

6. Kod keluar program klien.

--detail-counts= [lalai: tidak]
Apabila didayakan, Lackey mencetak jadual yang mengandungi kiraan muatan, stor dan ALU
operasi, dibezakan oleh jenis IR mereka. Jenis IR dikenal pasti oleh IR mereka
nama ("I1", "I8", ... "I128", "F32", "F64", dan "V128").

--trace-mem= [lalai: tidak]
Apabila didayakan, Lackey mencetak saiz dan alamat hampir setiap akses memori yang dibuat oleh
program yang. Lihat ulasan di bahagian atas fail lackey/lk_main.c untuk mendapatkan butiran
tentang format output, cara ia berfungsi dan ketidaktepatan dalam surih alamat. Catatan
bahawa pilihan ini menghasilkan sejumlah besar output.

--trace-superblocks= [lalai: tidak]
Apabila didayakan, Lackey mencetak alamat setiap superblock (satu masukan,
keluar berbilang, ketulan kod linear) yang dilaksanakan oleh atur cara. Ini terutamanya daripada
minat kepada pemaju Valgrind. Lihat ulasan di bahagian atas fail
lackey/lk_main.c untuk butiran tentang format output. Ambil perhatian bahawa pilihan ini menghasilkan
jumlah keluaran yang besar.

--fnname= [lalai: utama]
Menukar fungsi yang panggilan dikira apabila --basic-counts=ya dinyatakan.

Gunakan valgrind dalam talian menggunakan perkhidmatan onworks.net


Ad




×
Pengiklanan
❤ ️Beli, tempah atau beli di sini — tanpa kos, membantu memastikan perkhidmatan percuma.