亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? memleak3.tcl

?? 新版輕量級嵌入式數(shù)據(jù)庫
?? TCL
字號:
#/bin/sh# \exec `which tclsh` $0 "$@"## The author disclaims copyright to this source code.  In place of# a legal notice, here is a blessing:##    May you do good and not evil.#    May you find forgiveness for yourself and forgive others.#    May you share freely, never taking more than you give.######################################################################set doco "This script is a tool to help track down memory leaks in the sqlitelibrary. The library must be compiled with the preprocessor symbolSQLITE_MEMDEBUG set to at least 2. It must be set to 3 to enable stack traces.To use, run the leaky application and save the standard error output.Then, execute this program with the first argument the name of theapplication binary (or interpreter) and the second argument the name of thetext file that contains the collected stderr output.If all goes well a summary of unfreed allocations is printed out. If theGNU C library is in use and SQLITE_DEBUG is 3 or greater a stack trace isprinted out for each unmatched allocation.If the \"-r <n>\" option is passed, then the program stops and prints outthe state of the heap immediately after the <n>th call to malloc() orrealloc().Example:$ ./testfixture ../sqlite/test/select1.test 2> memtrace.out$ tclsh $argv0 ?-r <malloc-number>? ./testfixture memtrace.out"proc usage {} {  set prg [file tail $::argv0]  puts "Usage: $prg ?-r <malloc-number>? <binary file> <mem trace file>"  puts ""  puts [string trim $::doco]  exit -1}proc shift {listvar} {  upvar $listvar l  set ret [lindex $l 0]  set l [lrange $l 1 end]  return $ret}# Argument handling. The following vars are set:## $exe       - the name of the executable (i.e. "testfixture" or "./sqlite3")# $memfile   - the name of the file containing the trace output.# $report_at - The malloc number to stop and report at. Or -1 to read #              all of $memfile.#set report_at -1while {[llength $argv]>2} {  set arg [shift argv]  switch -- $arg {    "-r" {      set report_at [shift argv]    }    default {      usage    }  }}if {[llength $argv]!=2} usageset exe [lindex $argv 0]set memfile [lindex $argv 1]# If stack traces are enabled, the 'addr2line' program is called to# translate a binary stack address into a human-readable form.set addr2line addr2line# When the SQLITE_MEMDEBUG is set as described above, SQLite prints# out a line for each malloc(), realloc() or free() call that the# library makes. If SQLITE_MEMDEBUG is 3, then a stack trace is printed# out before each malloc() and realloc() line.## This program parses each line the SQLite library outputs and updates# the following global Tcl variables to reflect the "current" state of# the heap used by SQLite.#set nBytes 0               ;# Total number of bytes currently allocated.set nMalloc 0              ;# Total number of malloc()/realloc() calls.set nPeak 0                ;# Peak of nBytes.set iPeak 0                ;# nMalloc when nPeak was set.## More detailed state information is stored in the $memmap array. # Each key in the memmap array is the address of a chunk of memory# currently allocated from the heap. The value is a list of the # following form# #     {<number-of-bytes> <malloc id> <stack trace>}#array unset memmapproc process_input {input_file array_name} {  upvar $array_name mem   set input [open $input_file]  set MALLOC {([[:digit:]]+) malloc ([[:digit:]]+) bytes at 0x([[:xdigit:]]+)}  # set STACK {^[[:digit:]]+: STACK: (.*)$}  set STACK {^STACK: (.*)$}  set FREE {[[:digit:]]+ free ([[:digit:]]+) bytes at 0x([[:xdigit:]]+)}  set REALLOC {([[:digit:]]+) realloc ([[:digit:]]+) to ([[:digit:]]+)}  append REALLOC { bytes at 0x([[:xdigit:]]+) to 0x([[:xdigit:]]+)}  set stack ""  while { ![eof $input] } {    set line [gets $input]    if {[regexp $STACK $line dummy stack]} {      # Do nothing. The variable $stack now stores the hexadecimal stack dump      # for the next malloc() or realloc().    } elseif { [regexp $MALLOC $line dummy mallocid bytes addr]  } {      # If this is a 'malloc' line, set an entry in the mem array. Each entry      # is a list of length three, the number of bytes allocated , the malloc      # number and the stack dump when it was allocated.      set mem($addr) [list $bytes "malloc $mallocid" $stack]      set stack ""      # Increase the current heap usage      incr ::nBytes $bytes      # Increase the number of malloc() calls      incr ::nMalloc      if {$::nBytes > $::nPeak} {        set ::nPeak $::nBytes        set ::iPeak $::nMalloc      }    } elseif { [regexp $FREE $line dummy bytes addr] } {      # If this is a 'free' line, remove the entry from the mem array. If the       # entry does not exist, or is the wrong number of bytes, announce a      # problem. This is more likely a bug in the regular expressions for      # this script than an SQLite defect.      if { [lindex $mem($addr) 0] != $bytes } {        error "byte count mismatch"      }      unset mem($addr)       # Decrease the current heap usage      incr ::nBytes [expr -1 * $bytes]    } elseif { [regexp $REALLOC $line dummy mallocid ob b oa a] } {      # "free" the old allocation in the internal model:      incr ::nBytes [expr -1 * $ob]      unset mem($oa);      # "malloc" the new allocation      set mem($a) [list $b "realloc $mallocid" $stack]      incr ::nBytes $b      set stack ""      # Increase the number of malloc() calls      incr ::nMalloc      if {$::nBytes > $::nPeak} {        set ::nPeak $::nBytes        set ::iPeak $::nMalloc      }    } else {      # puts "REJECT: $line"    }    if {$::nMalloc==$::report_at} report  }  close $input}proc printstack {stack} {  set fcount 10  if {[llength $stack]<10} {    set fcount [llength $stack]  }  foreach frame [lrange $stack 1 $fcount] {    foreach {f l} [split [exec $::addr2line -f --exe=$::exe $frame] \n] {}    puts [format "%-30s %s" $f $l]  }  if {[llength $stack]>0 } {puts ""}}proc report {} {  foreach key [array names ::memmap] {    set stack [lindex $::memmap($key) 2]    set bytes [lindex $::memmap($key) 0]    lappend summarymap($stack) $bytes  }  set sorted [list]  foreach stack [array names summarymap] {    set allocs $summarymap($stack)    set sum 0    foreach a $allocs {      incr sum $a    }    lappend sorted [list $sum $stack]  }  set sorted [lsort -integer -index 0 $sorted]  foreach s $sorted {    set sum [lindex $s 0]    set stack [lindex $s 1]    set allocs $summarymap($stack)    puts "$sum bytes in [llength $allocs] chunks ($allocs)"    printstack $stack  }  # Print out summary statistics  puts "Total allocations            : $::nMalloc"  puts "Total outstanding allocations: [array size ::memmap]"   puts "Current heap usage           : $::nBytes bytes"  puts "Peak heap usage              : $::nPeak bytes (malloc #$::iPeak)"  exit}process_input $memfile memmapreport

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类图片小说| 在线免费精品视频| 欧美日韩国产bt| 欧美高清在线视频| 久久精品国产精品亚洲红杏| 在线视频综合导航| 17c精品麻豆一区二区免费| 久久www免费人成看片高清| 欧美在线观看视频一区二区| 国产精品免费aⅴ片在线观看| 麻豆91在线看| 在线综合视频播放| 午夜精品免费在线观看| 91国产福利在线| 中文字幕人成不卡一区| 成人h精品动漫一区二区三区| 久久在线观看免费| 国产一区二区三区观看| 精品国产1区二区| 麻豆一区二区在线| 日韩一区二区电影在线| 日本视频在线一区| 欧美情侣在线播放| 肉肉av福利一精品导航| 欧美日韩色综合| 午夜久久久久久久久| 欧美日韩国产综合一区二区三区 | 欧美日韩一区二区三区四区 | 日本va欧美va欧美va精品| 欧美日韩国产免费一区二区| 亚洲一区二区三区四区五区中文 | 色香蕉久久蜜桃| 一区二区三区不卡视频在线观看| 一本一道久久a久久精品| 亚洲乱码国产乱码精品精98午夜| 91丝袜美腿高跟国产极品老师| 国产精品福利在线播放| 99精品久久免费看蜜臀剧情介绍| 亚洲视频一二三区| 欧美视频日韩视频在线观看| 亚洲.国产.中文慕字在线| 欧美日韩另类一区| 美国三级日本三级久久99| 久久亚洲欧美国产精品乐播| 国产福利一区在线| 亚洲免费成人av| 欧美日韩aaaaaa| 激情综合五月天| 国产欧美视频在线观看| 91免费看`日韩一区二区| 亚洲高清一区二区三区| 欧美va亚洲va国产综合| 成人精品视频一区| 婷婷开心激情综合| 久久先锋资源网| 91性感美女视频| 日韩二区在线观看| 日本一区二区三级电影在线观看| 91美女在线看| 另类小说图片综合网| 日本一区二区不卡视频| 欧美自拍偷拍一区| 国产精品一色哟哟哟| 樱花影视一区二区| 精品成人a区在线观看| 不卡高清视频专区| 强制捆绑调教一区二区| 综合自拍亚洲综合图不卡区| 欧美成人性福生活免费看| 成人黄色av网站在线| 日本视频一区二区三区| 亚洲视频1区2区| 久久噜噜亚洲综合| 欧美色手机在线观看| 国产成人免费视| 日韩成人一区二区三区在线观看| 国产精品高潮呻吟| 久久你懂得1024| 欧美肥妇free| 色婷婷久久一区二区三区麻豆| 国产伦精品一区二区三区免费迷| 亚洲二区在线视频| 国产精品久久国产精麻豆99网站| 日韩欧美在线网站| 欧洲日韩一区二区三区| 成人免费高清视频| 久久成人免费网站| 午夜精品福利一区二区三区av| 亚洲同性gay激情无套| 国产欧美日韩在线观看| 日韩你懂的在线播放| 欧美久久久久久蜜桃| 在线观看免费成人| 色国产精品一区在线观看| proumb性欧美在线观看| 国产电影一区在线| 激情图区综合网| 精品一区二区三区免费| 麻豆成人在线观看| 日本不卡一区二区三区| 午夜不卡av在线| 亚洲线精品一区二区三区| 一区二区三区中文字幕| 中文字幕一区二区三区在线播放 | 一本色道久久综合精品竹菊| 成人免费毛片aaaaa**| 国产成人在线观看| 国产超碰在线一区| 成人性色生活片免费看爆迷你毛片| 国产一区二区三区免费| 国产一区二区导航在线播放| 国产一区二区影院| 国产传媒欧美日韩成人| 床上的激情91.| 91女神在线视频| 在线观看国产91| 欧美理论片在线| 精品日韩在线观看| 久久久九九九九| 国产精品精品国产色婷婷| 亚洲视频 欧洲视频| 艳妇臀荡乳欲伦亚洲一区| 亚洲成精国产精品女| 青青青伊人色综合久久| 久久福利视频一区二区| 成人污视频在线观看| 成人97人人超碰人人99| 色天天综合色天天久久| 欧美日韩国产美女| 精品粉嫩aⅴ一区二区三区四区| 久久男人中文字幕资源站| 中文字幕亚洲成人| 亚洲v精品v日韩v欧美v专区| 九九视频精品免费| 99精品久久免费看蜜臀剧情介绍| 在线观看日韩一区| 欧美精品一区二区在线播放| 国产免费久久精品| 亚洲成av人**亚洲成av**| 激情久久五月天| 91啪在线观看| 日韩精品一区二区三区视频 | 国产精品99久久久久久似苏梦涵 | 国产999精品久久久久久| 97久久超碰精品国产| 欧美日韩aaaaa| 久久久国产综合精品女国产盗摄| 亚洲欧美国产77777| 久久精品国产成人一区二区三区| caoporn国产精品| 日韩视频免费直播| 亚洲欧美日韩系列| 精品亚洲aⅴ乱码一区二区三区| 91蝌蚪porny| 久久综合网色—综合色88| 亚洲久草在线视频| 国产一区二区成人久久免费影院| 色婷婷一区二区三区四区| 久久久亚洲午夜电影| 一区二区在线免费观看| 国产精品自在在线| 在线播放中文字幕一区| 中文字幕一区二区不卡| 久久99久国产精品黄毛片色诱| 色94色欧美sute亚洲线路二| 国产欧美日韩亚州综合| 日本视频免费一区| 欧美午夜在线一二页| 国产精品日日摸夜夜摸av| 久久91精品久久久久久秒播| 欧美日韩午夜在线| 亚洲综合在线观看视频| 成人免费毛片高清视频| 亚洲精品一区二区三区福利 | 亚洲国产视频直播| www.欧美色图| 久久久久久久性| 久久精品国产一区二区三| 欧美三级中文字| 一区二区三区国产精华| 99久久99久久综合| 国产精品视频在线看| 国产精品一区不卡| 精品国精品国产尤物美女| 石原莉奈一区二区三区在线观看| 色欧美88888久久久久久影院| 最近日韩中文字幕| 91在线国产福利| 亚洲欧洲日韩在线| 91丨九色丨黑人外教| 成人免费在线观看入口| 99视频精品全部免费在线| 中文字幕欧美国产| 成人激情视频网站| 国产精品久久久久一区二区三区共| 国产美女久久久久| 国产婷婷一区二区| 成人av网址在线观看| 综合精品久久久| 在线观看www91|