哈尔滨网站制作哪家好薇,山西运城网站开发,免费隐私网站推广app,今天高清视频免费播放Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的神器#xff0c;能够帮助我们快速定位到程序的内存问题#xff0c;比如内存泄漏导致的 段错误 (核心已转储)
包含以下工具#xff1a;
Memcheck#xff1a;检查程序中的内存问题#xff0c;如泄漏、越界、非法指…Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的神器能够帮助我们快速定位到程序的内存问题比如内存泄漏导致的 段错误 (核心已转储)
包含以下工具
Memcheck检查程序中的内存问题如泄漏、越界、非法指针等Callgrind主要用来检查程序中函数调用过程中出现的问题。Cachegrind分析CPU的cache命中率、丢失率用于进行代码优化。Helgrind主要用来检查多线程程序中出现的竞争问题。Massif主要用来检查程序中堆栈使用中出现的问题。Extension可利用core提供的功能自己编写特定的内存调试工具
使用语法如下 valgrind [options] ./prog_fileusage: valgrind [options] prog-and-argstool-selection option, with default in [ ]:--toolname use the Valgrind tool named name [memcheck]basic user options for all Valgrind tools, with defaults in [ ]:-h --help show this message--help-debug show this message, plus debugging options--version show version-q --quiet run silently; only print error msgs-v --verbose be more verbose -- show misc extra info--trace-childrenno|yes Valgrind-ise child processes (follow execve)? [no]--trace-children-skippatt1,patt2,... specifies a list of executablesthat --trace-childrenyes should not trace into--trace-children-skip-by-argpatt1,patt2,... same as --trace-children-skipbut check the argv[] entries for children, ratherthan the exe name, to make a follow/no-follow decision--child-silent-after-forkno|yes omit child output between fork exec? [no]--vgdbno|yes|full activate gdbserver? [yes]full is slower but provides precise watchpoint/step--vgdb-errornumber invoke gdbserver after number errors [999999999]to get started quickly, use --vgdb-error0and follow the on-screen directions--vgdb-stop-atevent1,event2,... invoke gdbserver for given events [none]where event is one of:startup exit valgrindabexit all none--track-fdsno|yes track open file descriptors? [no]--time-stampno|yes add timestamps to log messages? [no]--log-fdnumber log messages to file descriptor [2stderr]--log-filefile log messages to file--log-socketipaddr:port log messages to socket ipaddr:portuser options for Valgrind tools that report errors:--xmlyes emit error output in XML (some tools only)--xml-fdnumber XML output to file descriptor--xml-filefile XML output to file--xml-socketipaddr:port XML output to socket ipaddr:port--xml-user-commentSTR copy STR verbatim into XML output--demangleno|yes automatically demangle C names? [yes]--num-callersnumber show number callers in stack traces [12]--error-limitno|yes stop showing new errors if too many? [yes]--error-exitcodenumber exit code to return if errors found [0disable]--error-markersbegin,end add lines with begin/end markers before/aftereach error output in plain text mode [none]--show-below-mainno|yes continue stack traces below main() [no]--default-suppressionsyes|noload default suppressions [yes]--suppressionsfilename suppress errors described in filename--gen-suppressionsno|yes|all print suppressions for errors? [no]--input-fdnumber file descriptor for input [0stdin]--dsymutilno|yes run dsymutil on Mac OS X when helpful? [yes]--max-stackframenumber assume stack switch for SP changes largerthan number bytes [2000000]--main-stacksizenumber set size of main threads stack (in bytes)[min(max(current ulimit value,1MB),16MB)]user options for Valgrind tools that replace malloc:--alignmentnumber set minimum alignment of heap allocations [16]--redzone-sizenumber set minimum size of redzones added before/afterheap blocks (in bytes). [16]--xtree-memorynone|allocs|full profile heap memory in an xtree [none]and produces a report at the end of the executionnone: no profiling, allocs: current allocatedsize/blocks, full: profile current and cumulativeallocated size/blocks and freed size/blocks.--xtree-memory-filefile xtree memory report file [xtmemory.kcg.%p]uncommon user options for all Valgrind tools:--fullpath-after (with nothing after the )show full source paths in call stacks--fullpath-afterstring like --fullpath-after, but only show thepart of the path after string. Allows removalof path prefixes. Use this flag multiple timesto specify a set of prefixes to remove.--extra-debuginfo-pathpath absolute path to search for additionaldebug symbols, in addition to existing defaultwell known search paths.--debuginfo-serveripaddr:port also query this server(valgrind-di-server) for debug symbols--allow-mismatched-debuginfono|yes [no]for the above two flags only, accept debuginfoobjects that dont match the main object--smc-checknone|stack|all|all-non-file [all-non-file]checks for self-modifying code: none, only forcode found in stacks, for all code, or for allcode except that from file-backed mappings--read-inline-infoyes|no read debug info about inlined function callsand use it to do better stack traces. [yes]on Linux/Android/Solaris for Memcheck/Helgrind/DRDonly. [no] for all other tools and platforms.--read-var-infoyes|no read debug info on stack and global variablesand use it to print better error messages intools that make use of it (Memcheck, Helgrind,DRD) [no]--vgdb-pollnumber gdbserver poll max every number basic blocks [5000] --vgdb-shadow-registersno|yes let gdb see the shadow registers [no]--vgdb-prefixprefix prefix for vgdb FIFOs [/tmp/vgdb-pipe]--run-libc-freeresno|yes free up glibc memory at exit on Linux? [yes]--run-cxx-freeresno|yes free up libstdc memory at exit on Linuxand Solaris? [yes]--sim-hintshint1,hint2,... activate unusual sim behaviours [none] where hint is one of:lax-ioctls lax-doors fuse-compatible enable-outerno-inner-prefix no-nptl-pthread-stackcache fallback-llsc none--fair-schedno|yes|try schedule threads fairly on multicore systems [no]--kernel-variantvariant1,variant2,...handle non-standard kernel variants [none]where variant is one of:bproc android-no-hw-tlsandroid-gpu-sgx5xx android-gpu-adreno3xx none--merge-recursive-framesnumber merge frames between identicalprogram counters in max number frames) [0]--num-transtab-sectorsnumber size of translated code cache [32]more sectors may increase performance, but use more memory.--avg-transtab-entry-sizenumber avg size in bytes of a translatedbasic block [0, meaning use tool provided default]--aspace-minaddr0xPP avoid mapping memory below 0xPP [guessed]--valgrind-stacksizenumber size of valgrind (host) threads stack(in bytes) [1048576]--show-emwarnsno|yes show warnings about emulation limits? [no]--require-text-symbol:sonamepattern:symbolpattern abort run if thestated shared object doesnt have the statedtext symbol. Patterns can contain ? and *.--soname-synonymssyn1pattern1,syn2pattern2,... synonym sonamespecify patterns for function wrapping or replacement.To use a non-libc malloc library that isin the main exe: --soname-synonymssomallocNONEin libxyzzy.so: --soname-synonymssomalloclibxyzzy.so--sigill-diagnosticsyes|no warn about illegal instructions? [yes]--unw-stack-scan-threshnumber Enable stack-scan unwind if fewerthan number good frames found [0, meaning disabled]NOTE: stack scanning is only available on arm-linux.--unw-stack-scan-framesnumber Max number of frames that can berecovered by stack scanning [5]--resync-filterno|yes|verbose [yes on MacOS, no on other OSes]attempt to avoid expensive address-space-resync operations--max-threadsnumber maximum number of threads that valgrind canhandle [500]user options for Memcheck:--leak-checkno|summary|full search for memory leaks at exit? [summary]--leak-resolutionlow|med|high differentiation of leak stack traces [high]--show-leak-kindskind1,kind2,.. which leak kinds to show?[definite,possible]--errors-for-leak-kindskind1,kind2,.. which leak kinds are errors?[definite,possible]where kind is one of:definite indirect possible reachable all none--leak-check-heuristicsheur1,heur2,... which heuristics to use forimproving leak search false positive [all]where heur is one of:stdstring length64 newarray multipleinheritance all none--show-reachableyes same as --show-leak-kindsall--show-reachableno --show-possibly-lostyessame as --show-leak-kindsdefinite,possible--show-reachableno --show-possibly-lostnosame as --show-leak-kindsdefinite--xtree-leakno|yes output leak result in xtree format? [no]--xtree-leak-filefile xtree leak report file [xtleak.kcg.%p]--undef-value-errorsno|yes check for undefined value errors [yes]--track-originsno|yes show origins of undefined values? [no]--partial-loads-okno|yes too hard to explain here; see manual [yes]--expensive-definedness-checksno|yesUse extra-precise definedness tracking [no]--freelist-volnumber volume of freed blocks queue [20000000]--freelist-big-blocksnumber releases first blocks with size [1000000]--workaround-gcc296-bugsno|yes self explanatory [no]. Deprecated.Use --ignore-range-below-sp instead.--ignore-ranges0xPP-0xQQ[,0xRR-0xSS] assume given addresses are OK--ignore-range-below-spnumber-number do not report errors foraccesses at the given offsets below SP--malloc-fillhexnumber fill mallocd areas with given value--free-fillhexnumber fill freed areas with given value--keep-stacktracesalloc|free|alloc-and-free|alloc-then-free|nonestack trace(s) to keep for mallocd/freed areas [alloc-and-free]--show-mismatched-freesno|yes show frees that dont match the allocator? [yes]博主最常用的是内存诊断工具使用方法如下
valgrid --toolmemcheck ./test_file注意 编译时添加-g选项使用memcheck检查时的错误信息可精确到行。