青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Valgrind手冊(cè)翻譯

名字:
       valgrind是一個(gè)調(diào)試和剖析的程序工具集。

概要用法:
       valgrind [[valgrind] [options]] [your-program] [[your-program-options]]

概述:
       Valgrind是一個(gè)Linux下靈活的調(diào)試和剖析可執(zhí)行工具。它由在軟件層提供綜合的
       CPU內(nèi)核,和一系列調(diào)試、剖析的工具組成。架構(gòu)是模塊化的,所以可以在不破壞現(xiàn)
       有的結(jié)構(gòu)的基礎(chǔ)上很容易的創(chuàng)建出新的工具來(lái)。
       這本手冊(cè)包括了基本的用法和選項(xiàng)。更多幫助理解的信息,請(qǐng)查看您系統(tǒng)的HTML
       文檔:
         /usr/share/doc/valgrind/html/index.html
       或者在線文檔:
         http://www.valgrind.org/docs/manual/index.html.

用法:
       一般像下面這樣調(diào)用Valgrind:
           valgrind program args

       這樣將在Valgrind使用Memcheck運(yùn)行程序program(帶有參數(shù)args)。內(nèi)存檢查
       執(zhí)行一系列的內(nèi)存檢查功能,包括檢測(cè)訪問(wèn)未初始化的內(nèi)存,已經(jīng)分配內(nèi)存的錯(cuò)誤
       使用(兩次釋放,釋放后再訪問(wèn),等等)并檢查內(nèi)存泄漏。

       可用--tool指定使用其它工具:
           valgrind --tool=toolname program args

       可使用的工具如下:
       o cachegrind是一個(gè)緩沖模擬器。它可以用來(lái)標(biāo)出你的程序每一行執(zhí)行的指令
          數(shù)和導(dǎo)致的緩沖不命中數(shù)。

       o callgrind在cachegrind基礎(chǔ)上添加調(diào)用追蹤。它可以用來(lái)得到調(diào)用的次數(shù)
          以及每次函數(shù)調(diào)用的開(kāi)銷。作為對(duì)cachegrind的補(bǔ)充,callgrind可以分別
          標(biāo)注各個(gè)線程,以及程序反匯編輸出的每條指令的執(zhí)行次數(shù)以及緩存未命中
          數(shù)。

       o helgrind能夠發(fā)現(xiàn)程序中潛在的條件競(jìng)爭(zhēng)。

       o lackey是一個(gè)示例程序,以其為模版可以創(chuàng)建你自己的工具。在程序結(jié)束后,
       它打印出一些基本的關(guān)于程序執(zhí)行統(tǒng)計(jì)數(shù)據(jù)。

       o massif是一個(gè)堆剖析器,它測(cè)量你的程序使用了多少堆內(nèi)存。

       o memcheck是一個(gè)細(xì)粒度的的內(nèi)存檢查器。

       o none沒(méi)有任何功能。它它一般用于Valgrind的調(diào)試和基準(zhǔn)測(cè)試。

基本選項(xiàng):
       這些選項(xiàng)對(duì)所有工具都有效。

       -h --help
              顯示所有選項(xiàng)的幫助,包括內(nèi)核和選定的工具兩者。

       --help-debug
              和--help相同,并且還能顯示通常只有Valgrind的開(kāi)發(fā)人員使用的調(diào)試
              選項(xiàng)。

       --version
              顯示Valgrind內(nèi)核的版本號(hào)。工具可以有他們自已的版本號(hào)。這是一種
              保證工具只在它們可以運(yùn)行的內(nèi)核上工作的一種設(shè)置。這樣可以減少在
              工具和內(nèi)核之間版本兼容性導(dǎo)致奇怪問(wèn)題的概率。

       -q --quiet
              安靜的運(yùn)行,只打印錯(cuò)誤信息。在進(jìn)行回歸測(cè)試或者有其它的自動(dòng)化測(cè)
              試機(jī)制時(shí)會(huì)非常有用。

       -v --verbose
              顯示詳細(xì)信息。在各個(gè)方面顯示你的程序的額外信息,例如:共享對(duì)象
              加載,使用的重置,執(zhí)行引擎和工具的進(jìn)程,異常行為的警告信息。重
              復(fù)這個(gè)標(biāo)記可以增加詳細(xì)的級(jí)別。

       -d     調(diào)試Valgrind自身發(fā)出的信息。通常只有Valgrind開(kāi)發(fā)人員對(duì)此感興趣。
              重復(fù)這個(gè)標(biāo)記可以產(chǎn)生更詳細(xì)的輸出。如果你希望發(fā)送一個(gè)bug報(bào)告,通
              過(guò)-v -v -d -d生成的輸出會(huì)使你的報(bào)告更加有效。

       --tool=<toolname> [default: memcheck]
              運(yùn)行toolname指定的Valgrind,例如,Memcheck, Addrcheck, Cachegrind,
              等等。

       --trace-children=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),Valgrind會(huì)跟蹤到子進(jìn)程中。這經(jīng)常會(huì)導(dǎo)致困惑,而
              且通常不是你所期望的,所以默認(rèn)這個(gè)選項(xiàng)是關(guān)閉的。

       --track-fds=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),Valgrind會(huì)在退出時(shí)打印一個(gè)打開(kāi)文件描述符的列表。
              每個(gè)文件描述符都會(huì)打印出一個(gè)文件是在哪里打開(kāi)的棧回溯,和任何與此
              文件描述符相關(guān)的詳細(xì)信息比如文件名或socket信息。


       --time-stamp=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),每條信息之前都有一個(gè)從程序開(kāi)始消逝的時(shí)間,用天,
              小時(shí),分鐘,秒和毫秒表示。

       --log-fd=<number> [default: 2, stderr]
              指定Valgrind把它所有的消息都輸出到一個(gè)指定的文件描述符中去。默認(rèn)值
              2, 是標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)。注意這可能會(huì)干擾到客戶端自身對(duì)stderr
              的使用, Valgrind的輸出與客戶程序的輸出將穿插在一起輸出到stderr。

       --log-file=<filename>
              指定Valgrind把它所有的信息輸出到指定的文件中。實(shí)際上,被創(chuàng)建文件的
              文件名是由filename、'.'和進(jìn)程號(hào)連接起來(lái)的(即<filename>.<pid>),
              從而每個(gè)進(jìn)程創(chuàng)建不同的文件。

       --log-file-exactly=<filename>
              類似于--log-file,但是后綴".pid"不會(huì)被添加。如果設(shè)置了這個(gè)選項(xiàng),
              使用Valgrind跟蹤多個(gè)進(jìn)程,可能會(huì)得到一個(gè)亂七八糟的文件。            

       --log-file-qualifier=<VAR>
              當(dāng)和--log-file一起使用時(shí),日志文件名將通過(guò)環(huán)境變量$VAR來(lái)篩選。這
              對(duì)于MPI程序是有益的。更多的細(xì)節(jié),查看手冊(cè)2.3節(jié) "注解"。

       --log-socket=<ip-address:port-number>
              指定Valgrind輸出所有的消息到指定的IP,指定的端口。當(dāng)使用1500端口
              時(shí),端口有可能被忽略。如果不能建立一個(gè)到指定端口的連接,Valgrind
              將輸出寫到標(biāo)準(zhǔn)錯(cuò)誤(stderr)。這個(gè)選項(xiàng)經(jīng)常和一個(gè)Valgrind監(jiān)聽(tīng)程序一
              起使用。更多的細(xì)節(jié),查看手冊(cè)2.3節(jié) "注解"。


錯(cuò)誤相關(guān)選項(xiàng):
       這些選項(xiàng)適用于所有產(chǎn)生錯(cuò)誤的工具,比如Memcheck, 但是Cachegrind不行。

       --xml=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),輸出將是XML格式。這是為了使用Valgrind的輸出做為
              輸入的工具,例如GUI前端更加容易些。目前這個(gè)選項(xiàng)只在Memcheck時(shí)生效。

       --xml-user-comment=<string>
              在XML開(kāi)頭 附加用戶注釋,僅在指定了--xml=yes時(shí)生效,否則忽略。

       --demangle=<yes|no> [default: yes]
              打開(kāi)/關(guān)閉C++的名字自動(dòng)解碼。默認(rèn)打開(kāi)。當(dāng)打開(kāi)時(shí),Valgrind將嘗試著把
              編碼過(guò)的C++名字自動(dòng)轉(zhuǎn)回初始狀態(tài)。這個(gè)解碼器可以處理g++版本為2.X,
              3.X或4.X生成的符號(hào)。

              一個(gè)關(guān)于名字編碼解碼重要的事實(shí)是,禁止文件中的解碼函數(shù)名仍然使用
              他們未解碼的形式。Valgrind在搜尋可用的禁止條目時(shí)不對(duì)函數(shù)名解碼,
              因?yàn)檫@將使禁止文件內(nèi)容依賴于Valgrind的名字解碼機(jī)制狀態(tài), 會(huì)使速度
              變慢,且無(wú)意義。

       --num-callers=<number> [default: 12]
              默認(rèn)情況下,Valgrind顯示12層函數(shù)調(diào)用的函數(shù)名有助于確定程序的位置。
              可以通過(guò)這個(gè)選項(xiàng)來(lái)改變這個(gè)數(shù)字。這樣有助在嵌套調(diào)用的層次很深時(shí)確定
              程序的位置。注意錯(cuò)誤信息通常只回溯到最頂上的4個(gè)函數(shù)。(當(dāng)前函數(shù),和
              它的3個(gè)調(diào)用者的位置)。所以這并不影響報(bào)告的錯(cuò)誤總數(shù)。

              這個(gè)值的最大值是50。注意高的設(shè)置會(huì)使Valgrind運(yùn)行得慢,并且使用更多
              的內(nèi)存,但是在嵌套調(diào)用層次比較高的程序中非常實(shí)用。

       --error-limit=<yes|no> [default: yes]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),在總量達(dá)到10,000,000,或者1,000個(gè)不同的錯(cuò)誤,
              Valgrind停止報(bào)告錯(cuò)誤。這是為了避免錯(cuò)誤跟蹤機(jī)制在錯(cuò)誤很多的程序
              下變成一個(gè)巨大的性能負(fù)擔(dān)。

       --error-exitcode=<number> [default: 0]
              指定如果Valgrind在運(yùn)行過(guò)程中報(bào)告任何錯(cuò)誤時(shí)的退出返回值,有兩種情
              況;當(dāng)設(shè)置為默認(rèn)值(零)時(shí),Valgrind返回的值將是它模擬運(yùn)行的程序的
              返回值。當(dāng)設(shè)置為非零值時(shí),如果Valgrind發(fā)現(xiàn)任何錯(cuò)誤時(shí)則返回這個(gè)值。
              在Valgrind做為一個(gè)測(cè)試工具套件的部分使用時(shí)這將非常有用,因?yàn)槭箿y(cè)
              試工具套件只檢查Valgrind返回值就可以知道哪些測(cè)試用例Valgrind報(bào)告
              了錯(cuò)誤。

       --show-below-main=<yes|no> [default: no]
              默認(rèn)地,錯(cuò)誤時(shí)的棧回溯不顯示main()之下的任何函數(shù)(或者類似的函數(shù)像
              glibc的__libc_start_main(),如果main()沒(méi)有出現(xiàn)在棧回溯中);這些大
              部分都是令人厭倦的C庫(kù)函數(shù)。如果打開(kāi)這個(gè)選項(xiàng),在main()之下的函數(shù)也
              將會(huì)顯示。

       --suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp]
              指定一個(gè)額外的文件讀取不需要理會(huì)的錯(cuò)誤;你可以根據(jù)需要使用任意多
              的額外文件。

       --gen-suppressions=<yes|no|all> [default: no]
              當(dāng)設(shè)置為yes時(shí),Valgrind將會(huì)在每個(gè)錯(cuò)誤顯示之后自動(dòng)暫停并且打印下
              面這一行:
                  ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ----


              這個(gè)提示的行為和--db-attach選項(xiàng)(見(jiàn)下面)相同。

              如果選擇是,Valgrind會(huì)打印出一個(gè)錯(cuò)誤的禁止條目,你可以把它剪切然后
              粘帖到一個(gè)文件,如果不希望在將來(lái)再看到這個(gè)錯(cuò)誤信息。

              當(dāng)設(shè)置為all時(shí),Valgrind會(huì)對(duì)每一個(gè)錯(cuò)誤打印一條禁止條目,而不向用戶
              詢問(wèn)。

              這個(gè)選項(xiàng)對(duì)C++程序非常有用,它打印出編譯器調(diào)整過(guò)的名字。

              注意打印出來(lái)的禁止條目是盡可能的特定的。如果需要把類似的條目歸納
              起來(lái),比如在函數(shù)名中添加通配符。并且,有些時(shí)候兩個(gè)不同的錯(cuò)誤也會(huì)
              產(chǎn)生同樣的禁止條目,這時(shí)Valgrind就會(huì)輸出禁止條目不止一次,但是在
              禁止條目的文件中只需要一份拷貝(但是如果多于一份也不會(huì)引起什么問(wèn)
              題)。并且,禁止條目的名字像<在這兒輸入一個(gè)禁止條目的名字>;名字并
              不是很重要,它只是和-v選項(xiàng)一起使用打印出所有使用的禁止條目記錄。

       --db-attach=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),Valgrind將會(huì)在每次打印錯(cuò)誤時(shí)暫停并打出如下
              一行:

                  ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ----

              按下回車,或者N、回車,n、回車,Valgrind不會(huì)對(duì)這個(gè)錯(cuò)誤啟動(dòng)調(diào)試器。

              按下Y、回車,或者y、回車,Valgrind會(huì)啟動(dòng)調(diào)試器并設(shè)定在程序運(yùn)行的
              這個(gè)點(diǎn)。當(dāng)調(diào)試結(jié)束時(shí),退出,程序會(huì)繼續(xù)運(yùn)行。在調(diào)試器內(nèi)部嘗試?yán)^續(xù)
              運(yùn)行程序,將不會(huì)生效。

              按下C、回車,或者c、回車,Valgrind不會(huì)啟動(dòng)一個(gè)調(diào)試器,并且不會(huì)再
              次詢問(wèn)。

              注意:--db-attach=yes與--trace-children=yes有沖突。你不能同時(shí)使用
              它們。Valgrind在這種情況下不能啟動(dòng)。

              2002.05: 這是一個(gè)歷史的遺留物,如果這個(gè)問(wèn)題影響到你,請(qǐng)發(fā)送郵件并
              投訴這個(gè)問(wèn)題。

              2002.11:如果你發(fā)送輸出到日志文件或者到網(wǎng)絡(luò)端口,我猜這不會(huì)讓你有
              任何感覺(jué)。不須理會(huì)。

       --db-command=<command> [default: gdb -nw %f %p]
              通過(guò)--db-attach指定如何使用調(diào)試器。默認(rèn)的調(diào)試器是gdb.默認(rèn)的選項(xiàng)
              是一個(gè)運(yùn)行時(shí)擴(kuò)展Valgrind的模板。 %f會(huì)用可執(zhí)行文件的文件名替換,
              %p會(huì)被可執(zhí)行文件的進(jìn)程ID替換。

              這指定了Valgrind將怎樣調(diào)用調(diào)試器。默認(rèn)選項(xiàng)不會(huì)因?yàn)樵跇?gòu)造時(shí)是否檢
              測(cè)到了GDB而改變,通常是/usr/bin/gdb.使用這個(gè)命令,你可以指定一些
              調(diào)用其它的調(diào)試器來(lái)替換。

              給出的這個(gè)命令字串可以包括一個(gè)或多個(gè)%p %f擴(kuò)展。每一個(gè)%p實(shí)例都被
              解釋成將調(diào)試的進(jìn)程的PID,每一個(gè)%f實(shí)例都被解釋成要調(diào)試的進(jìn)程的可
              執(zhí)行文件路徑。            

       --input-fd=<number> [default: 0, stdin]
              使用--db-attach=yes和--gen-suppressions=yes選項(xiàng),在發(fā)現(xiàn)錯(cuò)誤時(shí),
              Valgrind會(huì)停下來(lái)去讀取鍵盤輸入。默認(rèn)地,從標(biāo)準(zhǔn)輸入讀取,所以關(guān)閉
              了標(biāo)準(zhǔn)輸入的程序會(huì)有問(wèn)題。這個(gè)選項(xiàng)允許你指定一個(gè)文件描述符來(lái)替代
              標(biāo)準(zhǔn)輸入讀取。

       --max-stackframe=<number> [default: 2000000]
              棧的最大值。如果棧指針的偏移超過(guò)這個(gè)數(shù)量,Valgrind則會(huì)認(rèn)為程序是
              切換到了另外一個(gè)棧執(zhí)行。

              如果在程序中有大量的棧分配的數(shù)組,你可能需要使用這個(gè)選項(xiàng)。
              valgrind保持對(duì)程序棧指針的追蹤。如果棧指針的偏移超過(guò)了這個(gè)數(shù)量,
              Valgrind假定你的程序切換到了另外一個(gè)棧,并且Memcheck行為與棧指
              針的偏移沒(méi)有超出這個(gè)數(shù)量將會(huì)不同。通常這種機(jī)制運(yùn)轉(zhuǎn)得很好。然而,
              如果你的程序在棧上申請(qǐng)了大的結(jié)構(gòu),這種機(jī)制將會(huì)表現(xiàn)得愚蠢,并且
              Memcheck將會(huì)報(bào)告大量的非法棧內(nèi)存訪問(wèn)。這個(gè)選項(xiàng)允許把這個(gè)閥值設(shè)置
              為其它值。

              應(yīng)該只在Valgrind的調(diào)試輸出中顯示需要這么做時(shí)才使用這個(gè)選項(xiàng)。在這
              種情況下,它會(huì)告訴你應(yīng)該指定的新的閥值。

              普遍地,在棧中分配大塊的內(nèi)存是一個(gè)壞的主意。因?yàn)檫@很容易用光你的
              棧空間,尤其是在內(nèi)存受限的系統(tǒng)或者支持大量小堆棧的線程的系統(tǒng)上,
              因?yàn)镸emcheck執(zhí)行的錯(cuò)誤檢查,對(duì)于堆上的數(shù)據(jù)比對(duì)棧上的數(shù)據(jù)要高效
              很多。如果你使用這個(gè)選項(xiàng),你可能希望考慮重寫代碼在堆上分配內(nèi)存
              而不是在棧上分配。

MALLOC()相關(guān)的選項(xiàng):
       對(duì)于使用自有版本的malloc() (例如Memcheck和massif),下面的選項(xiàng)可以使用。
       --alignment=<number> [default: 8]
              默認(rèn)Valgrind的malloc(),realloc(), 等等,是8字節(jié)對(duì)齊地址的。這
              是大部分處理器的標(biāo)準(zhǔn)。然而,一些程序可能假定malloc()等總是返回
              16字節(jié)或更多對(duì)齊的內(nèi)存。提供的數(shù)值必須在8和4096區(qū)間之內(nèi),并且
              必須是2的冪數(shù)。

非通用選項(xiàng):
       這些選項(xiàng)可以用于所有的工具,它們影響Valgrind core的幾個(gè)特性。大部分人不
       會(huì)用到這些選項(xiàng)。

       --run-libc-freeres=<yes|no> [default: yes]
       GNU C庫(kù)(libc.so),所有程序共用的,可能會(huì)分配一部分內(nèi)存自已用。通
              常在程序退出時(shí)釋放內(nèi)存并不麻煩 -- 這里沒(méi)什么問(wèn)題,因?yàn)長(zhǎng)inux內(nèi)核在
              一個(gè)進(jìn)程退出時(shí)會(huì)回收進(jìn)程全部的資源,所以這只是會(huì)造成速度慢。
             
              glibc的作者認(rèn)識(shí)到這樣會(huì)導(dǎo)致內(nèi)存檢查器,像Valgrind,在退出時(shí)檢查
              內(nèi)存錯(cuò)誤的報(bào)告glibc的內(nèi)存泄漏問(wèn)題,為了避免這個(gè)問(wèn)題,他們提供了
              一個(gè)__libc_freeres()例程特別用來(lái)讓glibc釋放分配的所有內(nèi)存。
              因此Memcheck在退出時(shí)嘗試著去運(yùn)行__libc_freeres()。

              不幸的是,在glibc的一些版本中,__libc_freeres是有bug會(huì)導(dǎo)致段錯(cuò)誤的。
              這在Red Hat 7.1上有特別聲明。所以,提供這個(gè)選項(xiàng)來(lái)決定是否運(yùn)行
              __libc_freeres。如果你的程序看起來(lái)在Valgrind上運(yùn)行得很好,但是在
              退出時(shí)發(fā)生段錯(cuò)誤,你可能需要指定--run-libc-freeres=no來(lái)修正,這將
              可能錯(cuò)誤的報(bào)告libc.so的內(nèi)存泄漏。

       --sim-hints=hint1,hint2,...
              傳遞雜湊的提示給Valgrind,輕微的修改模擬行為的非標(biāo)準(zhǔn)或危險(xiǎn)方式,
              可能有助于模擬奇怪的特性。默認(rèn)沒(méi)有提示打開(kāi)。小心使用!目前已知
              的提示有:
              o lax-ioctls: 對(duì)ioctl的處理非常不嚴(yán)格,唯一的假定是大小是正確的。
              不需要在寫時(shí)緩沖區(qū)完全的初始化。沒(méi)有這個(gè),用大量的奇怪的ioctl
              命令來(lái)使用一些設(shè)備驅(qū)動(dòng)將會(huì)非常煩人。
              o enable-inner:打開(kāi)某些特殊的效果,當(dāng)運(yùn)行的程序是Valgrind自身時(shí)。

       --kernel-variant=variant1,variant2,...
              處理系統(tǒng)調(diào)用和ioctls在這個(gè)平臺(tái)的默認(rèn)核心上產(chǎn)生不同的變量。這有助
              于運(yùn)行在改進(jìn)過(guò)的內(nèi)核或者支持非標(biāo)準(zhǔn)的ioctls上。小心使用。如果你不
              理解這個(gè)選項(xiàng)做的是什么那你幾乎不需要它。已經(jīng)知道的變量有:
              o bproc: 支持X86平臺(tái)上的sys_broc系統(tǒng)調(diào)用。這是為了運(yùn)行在BProc,
              它是標(biāo)準(zhǔn)Linux的一個(gè)變種,有時(shí)用來(lái)構(gòu)建集群。

       --show-emwarns=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),Valgrind在一些特定的情況下將對(duì)CPU仿真產(chǎn)生警告。
              通常這些都是不引人注意的。

       --smc-check=<none|stack|all> [default: stack]
              這個(gè)選項(xiàng)控制Valgrind對(duì)自我修改的代碼的檢測(cè)。Valgrind可以不做檢測(cè),
              可以檢測(cè)棧中自我修改的代碼,或者任意地方檢測(cè)自我修改的代碼。注意
              默認(rèn)選項(xiàng)是捕捉絕大多數(shù)情況,到目前我們了解的情況為止。使用all選項(xiàng)
              時(shí)會(huì)極大的降低速度。(但是用none選項(xiàng)運(yùn)行極少影響速度,因?yàn)閷?duì)大多數(shù)
              程序,非常少的代碼被添加到棧中)


調(diào)試VALGRIND選項(xiàng):
       還有一些選項(xiàng)是用來(lái)調(diào)試Valgrind自身的。在運(yùn)行一般的東西時(shí)不應(yīng)該需要的。
       如果你希望看到選項(xiàng)列表,使用--help-debug選項(xiàng)。

內(nèi)存檢查選項(xiàng):
       --leak-check=<no|summary|yes|full> [default: summary]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),當(dāng)客戶程序結(jié)束時(shí)查找內(nèi)存泄漏。內(nèi)存泄漏意味著
              有用malloc分配內(nèi)存塊,但是沒(méi)有用free釋放,而且沒(méi)有指針指向這塊
              內(nèi)存。這樣的內(nèi)存塊永遠(yuǎn)不能被程序釋放,因?yàn)闆](méi)有指針指向它們。如
              果設(shè)置為summary,Valgrind會(huì)報(bào)告有多少內(nèi)存泄漏發(fā)生了。如果設(shè)置為
              full或yes,Valgrind給出每一個(gè)獨(dú)立的泄漏的詳細(xì)信息。

       --show-reachable=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)關(guān)閉時(shí),內(nèi)存泄漏檢測(cè)器只顯示沒(méi)有指針指向的內(nèi)存塊,或
              者只能找到指向塊中間的指針。當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),內(nèi)存泄漏檢測(cè)器還
              報(bào)告有指針指向的內(nèi)存塊。這些塊是最有可能出現(xiàn)內(nèi)存泄漏的地方。你
              的程序可能,至少在原則上,應(yīng)該在退出前釋放這些內(nèi)存塊。這些有指
              針指向的內(nèi)存塊和沒(méi)有指針指向的內(nèi)存塊,或者只有內(nèi)部指針指向的塊,
              都可能產(chǎn)生內(nèi)存泄漏,因?yàn)閷?shí)際上沒(méi)有一個(gè)指向塊起始的指針可以拿來(lái)釋
              放,即使你想去釋放它。

       --leak-resolution=<low|med|high> [default: low]
              在做內(nèi)存泄漏檢查時(shí),確定memcheck將怎么樣考慮不同的棧是相同的情況。
              當(dāng)設(shè)置為low時(shí),只需要前兩層棧匹配就認(rèn)為是相同的情況;當(dāng)設(shè)置為med,
              必須要四層棧匹配,當(dāng)設(shè)置為high時(shí),所有層次的棧都必須匹配。
             
              對(duì)于hardcore內(nèi)存泄漏檢查,你很可能需要使用--leak-resolution=high和
              --num-callers=40或者更大的數(shù)字。注意這將產(chǎn)生巨量的信息,這就是為什
              么默認(rèn)選項(xiàng)是四個(gè)調(diào)用者匹配和低分辨率的匹配。
              注意--leak-resolution= 設(shè)置并不影響memcheck查找內(nèi)存泄漏的能力。它
              只是改變了結(jié)果如何輸出。

       --freelist-vol=<number> [default: 5000000]
              當(dāng)客戶程序使用free(C中)或者delete(C++)釋放內(nèi)存時(shí),這些內(nèi)存并不是
              馬上就可以用來(lái)再分配的。這些內(nèi)存將被標(biāo)記為不可訪問(wèn)的,并被放到一
              個(gè)已釋放內(nèi)存的隊(duì)列中。這樣做的目的是,使釋放的內(nèi)存再次被利用的點(diǎn)
              盡可能的晚。這有利于memcheck在內(nèi)存塊釋放后這段重要的時(shí)間檢查對(duì)塊
              不合法的訪問(wèn)。

              這個(gè)選項(xiàng)指定了隊(duì)列所能容納的內(nèi)存總?cè)萘浚宰止?jié)為單位。默認(rèn)的值是
              5000000字節(jié)。增大這個(gè)數(shù)目會(huì)增加memcheck使用的內(nèi)存,但同時(shí)也增加了
              對(duì)已釋放內(nèi)存的非法使用的檢測(cè)概率。

       --workaround-gcc296-bugs=<yes|no> [default: no]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),假定讀寫棧指針以下的一小段距離是gcc 2.96的bug,
              并且不報(bào)告為錯(cuò)誤。距離默認(rèn)為256字節(jié)。注意gcc 2.96是一些比較老的
              Linux發(fā)行版(RedHat 7.X)的默認(rèn)編譯器,所以你可能需要使用這個(gè)選項(xiàng)。
              如果不是必要請(qǐng)不要使用這個(gè)選項(xiàng),它可能會(huì)使一些真正的錯(cuò)誤溜掉。
              一個(gè)更好的解決辦法是使用較新的,修正了這個(gè)bug的gcc/g++版本。

       --partial-loads-ok=<yes|no> [default: no]
              控制memcheck如何處理從地址讀取時(shí)字長(zhǎng)度,字對(duì)齊,因此哪些字節(jié)是可
              以尋址的,哪些是不可以尋址的。當(dāng)設(shè)置為yes是,這樣的讀取并不拋出
              一個(gè)尋址錯(cuò)誤。而是從非法地址讀取的V字節(jié)顯示為未定義,訪問(wèn)
              合法地址仍然是像平常一樣映射到內(nèi)存。

              設(shè)置為no時(shí),從部分錯(cuò)誤的地址讀取與從完全錯(cuò)誤的地址讀取同樣處理:
              拋出一個(gè)非法地址錯(cuò)誤,結(jié)果的V字節(jié)顯示為合法數(shù)據(jù)。

              注意這種代碼行為是違背ISO C/C++標(biāo)準(zhǔn),應(yīng)該被認(rèn)為是有問(wèn)題的。如果可
              能,這種代碼應(yīng)該修正。這個(gè)選項(xiàng)應(yīng)該只是做為一個(gè)最后考慮的方法。

       --undef-value-errors=<yes|no> [default: yes]
              控制memcheck是否檢查未定義值的危險(xiǎn)使用。當(dāng)設(shè)為yes時(shí),Memcheck的行
              為像Addrcheck, 一個(gè)輕量級(jí)的內(nèi)存檢查工具,是Valgrind的一個(gè)部分,它
              并不檢查未定義值的錯(cuò)誤。使用這個(gè)選項(xiàng),如果你不希望看到未定義值錯(cuò)誤。


CACHEGRIND選項(xiàng):
       手動(dòng)指定I1/D1/L2緩沖配置,大小是用字節(jié)表示的。這三個(gè)必須用逗號(hào)隔開(kāi),中間
       沒(méi)有空格,例如:
           valgrind --tool=cachegrind --I1=65535,2,64

       你可以指定一個(gè),兩個(gè)或三個(gè)I1/D1/L2緩沖。如果沒(méi)有手動(dòng)指定,每個(gè)級(jí)別使用
       普通方式(通過(guò)CPUID指令得到緩沖配置,如果失敗,使用默認(rèn)值)得到的配置。

       --I1=<size>,<associativity>,<line size>
              指定第一級(jí)指令緩沖的大小,關(guān)聯(lián)度和行大小。

       --D1=<size>,<associativity>,<line size>
              指定第一級(jí)數(shù)據(jù)緩沖的大小,關(guān)聯(lián)度和行大小。

       --L2=<size>,<associativity>,<line size>
              指定第二級(jí)緩沖的大小,關(guān)聯(lián)度和行大小。

CALLGRIND選項(xiàng):
       --heap=<yes|no> [default: yes]
              當(dāng)這個(gè)選項(xiàng)打開(kāi)時(shí),詳細(xì)的追蹤堆的使用情況。關(guān)閉這個(gè)選項(xiàng)時(shí),
              massif.pid.txt或massif.pid.html將會(huì)非常的簡(jiǎn)短。

       --heap-admin=<number> [default: 8]
              每個(gè)塊使用的管理字節(jié)數(shù)。這只能使用一個(gè)平均的估計(jì)值,因?yàn)樗赡茏兓?br>              glibc使用的分配器每塊需要4~15字節(jié),依賴于各方面的因素。管理已經(jīng)釋放
              的塊也需要空間,盡管massif不計(jì)算這些。            

       --stacks=<yes|no> [default: yes]
              當(dāng)打開(kāi)時(shí),在剖析信息中包含棧信息。多線程的程序可能有多個(gè)棧。

       --depth=<number> [default: 3]
              詳細(xì)的堆信息中調(diào)用過(guò)程的深度。增加這個(gè)值可以給出更多的信息,但是
              massif會(huì)更使這個(gè)程序運(yùn)行得慢,使用更多的內(nèi)存,并且產(chǎn)生一個(gè)大的
              massif.pid.txt或者massif.pid.hp文件。

       --alloc-fn=<name>
              指定一個(gè)分配內(nèi)存的函數(shù)。這對(duì)于使用malloc()的包裝函數(shù)是有用的,可以
              用它來(lái)填充原來(lái)無(wú)效的上下文信息。(這些函數(shù)會(huì)給出無(wú)用的上下文信息,
              并在圖中給出無(wú)意義的區(qū)域)。指定的函數(shù)在上下文中被忽略,例如,像對(duì)
              malloc()一樣處理。這個(gè)選項(xiàng)可以在命令行中重復(fù)多次,指定多個(gè)函數(shù)。

       --format=<text|html> [default: text]
              產(chǎn)生text或者HTML格式的詳細(xì)堆信息,文件的后綴名使用.txt或者.html。

HELGRIND選項(xiàng):
       --private-stacks=<yes|no> [default: no]
              假定線程棧是私有的。

       --show-last-access=<yes|some|no> [default: no]
              顯示最后一次字訪問(wèn)出錯(cuò)的位置。

LACKEY選項(xiàng):
       --fnname=<name> [default: _dl_runtime_resolve()]
              對(duì)<name>函數(shù)計(jì)數(shù)。

       --detailed-counts=<no|yes> [default: no]
              對(duì)讀取,存儲(chǔ)和alu操作計(jì)數(shù)。

參考:
        /usr/share/doc/valgrind/html/index.html, 和/或者
       http://www.valgrind.org/docs/manual/index.html.

作者信息:
       Julian Seward <jseward@acm.org>是Valgrind的初始作者,在
       /usr/share/doc/valgrind/AUTHORS還有其他的貢獻(xiàn)者的信息。
       這份手冊(cè)由Andres Roldan <aroldan@debian.org>為Debian工程編寫,但是可以在
       任何其它發(fā)行版上使用。
      
       2.4.0版本的更新,重排,和擴(kuò)展由Robert Walsh <rjwalsh@durables.org>,
       后來(lái)由其它的Valgrind開(kāi)發(fā)者完成。

       本手冊(cè)的翻譯工作由鄧杰和莊禮深同學(xué)共同完成。

posted on 2008-06-04 09:40 Wealth 閱讀(3815) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Translation

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類(8)

隨筆檔案(8)

文章分類

Around Web

CoBlog

Develop Usage Link

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久亚洲春色中文字幕| 亚洲视频在线一区| 欧美+日本+国产+在线a∨观看| 午夜在线视频观看日韩17c| 欧美天天综合网| 久久国产精品99精品国产| 欧美一区二区免费| 黄色成人在线| 亚洲国产一区视频| 欧美精品一区二区三区四区 | 久久激情一区| …久久精品99久久香蕉国产| 亚洲高清在线| 国产精品视频一区二区高潮| 久久夜色精品亚洲噜噜国产mv | 一本大道久久a久久综合婷婷| 国产精品一区在线观看你懂的| 久久亚洲电影| 欧美体内she精视频在线观看| 久久久免费精品| 欧美黄色大片网站| 欧美在线三区| 久久综合九色九九| 欧美一区2区视频在线观看| 久久久999精品免费| 一区电影在线观看| 久久蜜桃香蕉精品一区二区三区| 99精品国产福利在线观看免费| 亚洲欧美乱综合| 99视频精品在线| 久久国产精品久久精品国产| 一区二区三区四区精品| 久久久久成人精品免费播放动漫| 亚洲宅男天堂在线观看无病毒| 久久手机精品视频| 欧美一级电影久久| 欧美日本成人| 欧美成人一区在线| 国产亚洲毛片在线| 在线视频亚洲一区| 99精品福利视频| 六月丁香综合| 久久综合九色综合久99| 国产精品美女久久久久aⅴ国产馆| 亚洲高清视频的网址| 亚洲午夜精品一区二区| 亚洲剧情一区二区| 久久免费黄色| 久久久久久黄| 国产亚洲成人一区| 亚洲一区二区在线播放| 亚洲一区二区三区精品动漫| 欧美黄色网络| 欧美高清在线| 伊人久久成人| 久久嫩草精品久久久久| 久久精品国产亚洲一区二区三区| 国产精品一区二区在线| 99精品国产在热久久婷婷| 日韩视频免费观看高清完整版| 美女尤物久久精品| 亚洲第一区在线观看| 亚洲电影免费| 女主播福利一区| 亚洲丁香婷深爱综合| 亚洲欧洲一二三| 欧美国产第一页| 亚洲精品国产精品乱码不99| 亚洲人在线视频| 欧美激情视频一区二区三区不卡| 亚洲国产精品成人精品| 亚洲免费电影在线观看| 欧美日本一区二区高清播放视频| 亚洲区国产区| 亚洲一区二区精品| 国产欧美高清| 久久久噜噜噜久久人人看| 欧美二区在线播放| 99视频热这里只有精品免费| 国产精品99免费看| 欧美一级淫片aaaaaaa视频| 美女爽到呻吟久久久久| 最新精品在线| 国产精品久久久久久五月尺 | 欧美刺激性大交免费视频| 91久久精品国产91性色| 欧美日韩亚洲一区二区三区| 亚洲制服少妇| 欧美高清在线| 亚洲欧美一区二区精品久久久| 国内精品模特av私拍在线观看| 裸体女人亚洲精品一区| 一本色道久久综合精品竹菊| 久久国产66| 夜夜爽www精品| 国内一区二区三区| 欧美黑人在线观看| 午夜精品视频一区| 亚洲激情精品| 久久久久久久综合| 一区二区三区视频免费在线观看| 国产午夜久久| 欧美日韩亚洲综合在线| 久久国产精品久久久| 99视频精品在线| 另类图片综合电影| 亚洲欧美中文日韩v在线观看| 影音先锋久久| 国产精品久久久久久久app| 久久影院亚洲| 午夜精品福利视频| 亚洲久久一区| 欧美国产91| 久久一二三国产| 欧美一区二区福利在线| 99视频精品全部免费在线| 永久免费精品影视网站| 久久激情视频久久| 亚洲私拍自拍| 日韩亚洲欧美一区二区三区| 欧美大胆成人| 蜜臀av国产精品久久久久| 午夜一区二区三区在线观看 | 黄色成人免费网站| 国产精品一区二区你懂的| 欧美日韩国产欧| 欧美好骚综合网| 免费的成人av| 久久久久久网站| 欧美在线免费视频| 亚洲欧美在线免费观看| 一区二区三区.www| 99伊人成综合| 夜夜夜久久久| 妖精视频成人观看www| 亚洲精品美女在线观看| 亚洲国产成人久久| 亚洲国产一区二区精品专区| 免费成人在线观看视频| 噜噜噜在线观看免费视频日韩| 久久久噜噜噜久久| 久久久欧美一区二区| 欧美成人a∨高清免费观看| 麻豆久久婷婷| 欧美精品v日韩精品v韩国精品v| 欧美77777| 欧美成人一二三| 欧美精品福利在线| 欧美图区在线视频| 国产精品日韩一区| 国产麻豆日韩欧美久久| 国产一区亚洲一区| 在线看片成人| 99精品免费视频| 中日韩男男gay无套| 午夜精品久久久久久久男人的天堂 | 老**午夜毛片一区二区三区| 久久久久久高潮国产精品视| 久久久久久尹人网香蕉| 免费视频一区| 亚洲精品午夜| 西瓜成人精品人成网站| 久久久国产亚洲精品| 欧美不卡视频| 国产精品久久久久影院色老大| 国产一区二区三区在线观看免费视频 | 久久综合给合久久狠狠狠97色69| 美日韩精品视频| 亚洲激情影院| 亚洲免费在线播放| 久久一区亚洲| 欧美交受高潮1| 国产乱码精品一区二区三区av| 精品不卡视频| 亚洲视频www| 久久噜噜亚洲综合| 亚洲免费高清视频| 欧美一区二区观看视频| 欧美精品播放| 国产亚洲欧美另类中文 | 国产精品一区视频| 亚洲激情偷拍| 午夜视频一区在线观看| 欧美暴力喷水在线| 国产一区二区三区高清| 国产美女精品免费电影| 欧美日韩国产首页在线观看| 国产精品一区二区在线观看不卡 | 午夜精品短视频| 欧美巨乳在线观看| 国产在线精品自拍| 亚洲视频第一页| 亚洲国产成人av好男人在线观看| 午夜精品国产精品大乳美女| 欧美福利视频一区| 永久免费精品影视网站| 欧美有码视频| 一本久久综合亚洲鲁鲁五月天| 久久综合久久综合久久综合| 国产伦精品一区二区三区高清|