3. 断点/监视点/栈操作和变量相关
变量(variable)相关
命令 | 说明 |
---|---|
print [file:]var p [file:]var | 输出(指定文件中)变量var的值 |
print *arr@len | 输出数组arr的前len个成员 |
p/format var | 以指定格式输出变量var的值。 x:16进制数值;d:有符号整数; u:无符号整数; o:八进制数值; [t|b]:二进制数值; c:字符; f:浮点数; a:16进制地址;... |
x/w addr | 以二进制方式输出指定地址addr处的4字节 |
print var=value | 改变变量var的值为value |
断点和监视点(breakpoint, watchpoint)
命令 | 说明 |
---|---|
break [file:][line|func] b [file:][line|func] | 在(文件file)第line行/函数func处设置断点 |
break (+|-)offset | 在程序当前运行处后/前offset行设置断点 |
break *addr | 在地址addr处设置断点 |
break | 在下一指令处设置断点 |
break position if condition | 当表达式condition为真时在position处暂停程序 |
cond n [expr] | 在断点n处设置新的暂停条件expr; 如expr为空则清除断点处条件 |
tbreak ... | 临时断点。一旦程序运行停于此处,则禁止断点 |
rbreak regex | 在所有匹配正则表达式regex的函数处设置断点 |
break line thread thid | 在线程thid中line行设定断点 |
info break | 显示已定义的所有断点 |
clear [file:][func|line] | 删除指定处断点;如未指定断点位置,则清除下一条指令处断点 |
delete n_or_range d n_or_range | 删除断点n或指定范围range中的断点 |
enable n_or_range | 允许断点n或指定范围range内断点 |
enable once n | 允许断点n,仅生效一次 |
disable n_or_range | 使断点n失效 |
ignore n count | 指定忽略断点n的次数(count) |
catch event | 捕获到指定的event后暂停程序运行,event可以是catch,throw,exec,fork,vfork,load,unload等 |
watch expr | 为表达式expr设置观察点,当expr值发生变化时,挂起进程 |
栈(stack)相关
命令 | 说明 |
---|---|
backtrace [n] bt [n] | 打印栈中的所有frame;或最内层n(n>0)帧/最外层n(n<0)帧 |
frame [n] | 选择第n帧/地址为n的帧,未指定n则显示当前帧 |
up n | 向上选择n帧 |
down n | 向下选择n帧 |