gdb 가 더 편리 하 게 디 버 깅 nginx: ngx 보기array_t,ngx_list_t 등 구조
define pnarr
if $argc == 0
help pnarr
else
set $size = $arg0.nelts
set $capacity = $arg0.nalloc
set $i = 0
while $i < $size
printf "elem[%d]: ", $i
p *(($arg1*)($arg0.elts) + $i)
set $i++
end
printf "Priority array size = %u
", $size
printf "Priority array capacity = %u
", $capacity
end
end
document pnarr
Prints ngx_array_t information:all elements, size and capacity of the arr_var
Syntax: pnarr arr_var elem_type
Example:
pnarr cycle->pathes ngx_path_t
end
define pnlist
if $argc == 0
help pnlist
else
set $size = $arg0.part.nelts
set $capacity = $arg0.nalloc
set $part = &($arg0.part)
set $data = ($arg1*)($part->elts)
set $i = 0
set $continue = 1
while $continue == 1
if $i >= $part->nelts
if $part->next == 0
set $continue = 0
end
if $continue
set $part = $part->next
set $data = ($arg1*)$part->elts
set $i = 0
end
end
if $continue
printf "elem[%d]: ", $i
p *$data
set $i++
end
end
printf "frist list part's size = %u
", $size
printf "frist list part's capacity = %u
", $capacity
end
end
document pnlist
Prints ngx_list_t information : all elements, size and capacity of the list_var
Syntax: pnlist list_var elem_type
end
define pnmodule
if $argc == 0
help pnmodule
else
set $i = $arg0
echo
printf "-----------------module[%d]---------------------
", $i
p ngx_modules_name[$i]
echo
module's type :
if ngx_modules[$i].type == 0x45524F43
echo core_module
end
if ngx_modules[$i].type == 0x464E4F43
echo conf_module
end
if ngx_modules[$i].type == 0x544E5645
echo event_module
end
if ngx_modules[$i].type == 0x4C49414D
echo mail_module
end
if ngx_modules[$i].type == 0x50545448
echo http_module
end
echo
p *ngx_modules[$i]
set $cmd = ngx_modules[$i]->commands
if $cmd != 0
set $j = 0
while $cmd[$j].name.len !=0
# command's type
echo
echo command's type :
if $cmd[$j].type&0x01000000
echo main_conf,
end
if $cmd[$j].type&0x0F000000
echo any_conf,
end
if $cmd[$j].type&0x00000100
echo conf_block,
end
if $cmd[$j].type&0x00000200
echo conf_flag,
end
echo
# command's detail
p $cmd[$j]
set $j++
end
end
end
end
document pnmodule
Print ngx_modules's infomation.
end
define pnallmodule
set $i = 0
set $module = ngx_modules[$i]
while $module != 0
pnmodule $i
set $i++
end
end
예:
(gdb) pnarr
Prints ngx_array_t information.
Syntax: pnarr arr_var elem_type: Prints all elements, size and capacity of the arr_var
Example:
pnarr arr - prints all elements, size and capacity of arr
/ / ngx 보기cycle_s. pathes 내용, pathes 는 array 이 고 원 소 는 ngxpath_t
(gdb) pnarr cycle->pathes ngx_path_t
elem[0]: $5 = {
name = {
len = 135379312,
data = 0x811c000 ")"
},
len = 135383844,
level = {135392488, 135400956, 0},
manager = 0,
loader = 0,
data = 0x0,
conf_file = 0x0,
line = 9
}
elem[1]: $6 = {
name = {
len = 45,
data = 0x8109615 "/home/nemo/progs/nginx/sbin/../logs/error.log"
},
len = 0,
level = {0, 0, 10},
manager = 0x2e,
loader = 0x811ba90,
data = 0x0,
conf_file = 0x0,
line = 0
}
elem[2]: $7 = {
name = {
len = 0,
data = 0x0
},
len = 0,
level = {0, 0, 0},
manager = 0,
loader = 0,
data = 0x0,
conf_file = 0x0,
line = 0
}
elem[3]: $8 = {
name = {
len = 0,
data = 0x0
},
len = 0,
level = {0, 0, 0},
manager = 0,
---Type
loader = 0,
data = 0x0,
conf_file = 0x0,
line = 0
}
elem[4]: $9 = {
name = {
len = 0,
data = 0x0
},
len = 0,
level = {0, 0, 0},
manager = 0,
loader = 0,
data = 0x0,
conf_file = 0x0,
line = 0
}
Priority array size = 5
Priority array capacity = 10
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.