GDB备忘录

选项:

gdb -q 没有GUNblabla一大堆介绍

gdb -tui 这样,使用了'-tui'选项,启动可以直接将屏幕分成两个部分,上面显示源代码,比用list方便多了。这时候使用上下方向键可以查看源代码,想要命令行使用上下键就用[Ctrl]n和[Ctrl]p. 

命令:

Ctrl + L——刷新窗口 

display 表达式——在单步运行时非常有用,用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如 display a 

watch 表达式——设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a 

kill——将强行终止当前正在调试的程序 

run——运行

backtrace——生成函数树,也可以用bt

list ——简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。 
list 行号——将显示当前文件以“行号”为中心的前后10行代码,如:list 12 
list 函数名——将显示“函数名”所在函数的源代码,如:list main 
list ——不带参数,将接着上一次 list 命令的,输出下边的内容。 
  注意 :如果运行list 命令得到类似如下的打印,那是因为在编译程序时没有加入 -g 选项:
  (gdb) list
  1       ../sysdeps/i386/elf/start.S: No such file or directory.
          in ../sysdeps/i386/elf/start.S

print ——打印任何合法表达式的值

print exp@n——打印从exp开始的n个值

whatis——变量类型

break filename:linenum

break filename:funcname

break linenum if expr

break funcname if expr——设置断点

info breakpoints——查看断点

delete n——撤销n号断点

disable n——使n号断点无效

enable n——使n号断点生效

ptype s——查看结构体s的定义

set variable varname = value——改变一个变量的值

step——单步跟踪

next——执行完整个函数

continue——继续执行

call name(args)——调用并执行名为name,参数args的函数

finish——中止当前函数并打印他的返回值

return——停止执行当前函数,并将value返回给调用者

print 'filename'::varname——打印源文件的变量值

print &funcname::varname——打印函数的变量值

up——调用栈上移一个函数调用

down——调用栈下移一个函数调用

 search <string>——在当前文件中定位字符串的下一次出现

reverse-search <string>——在当前文件中定位字符串的上一次出现

shell command——不离开GDB就能执行shell命令

启动GDB:gdb filename PID——将GDB附加到一个正在运行的程序上

detach——把GDB从进程中分离出来

file filename

attach PID——指定运行在进程中的程序名,将GDB附加到一个运行的程序上

set args 参数——指定运行时的参数

show args——查看设置好的参数

show paths——查看程序运行路径;

           set environment varname [=value] 设置环境变量。如:set env USER=hchen;

            show environment [varname] 查看环境变量;

posted @ 2012-03-21 01:25  Gwa  阅读(268)  评论(0编辑  收藏  举报