gdb的运用
原创
©著作权归作者所有:来自51CTO博客作者儒家辉少的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、gdb应用。
1、列出源程序。
@命令为“list”or "l".
如: "list"
"list 10"显示第10行的内容。
“list 2 ,6”:显示2 到6 行内容。
2、运行程序的命令。
(gdb)run <arg1 arg2....>
(gdb)show args :查看上一次用的参数。Set args <arg1 arg2> 重新设置参数。
3、操作断点的命令。
@设置断点。(最好和listg一起用)
(1)在源程序中的行设置断点:Break <line-number>如:break 6
(2)在指定的前设置断点。Break <function-name>如:break printstar
(3)使用表达式设置断点:break <line number> if <conditional expression>
如:beak 12 if i==9 (当i等于9时启动12行的断点)
如果有一个1号断点已经设置了,想再设置条件,可以这样来:
如:condition 1 if i==10
想查看断点的信息可以 用“info break”
(4)在指定全程的入口设置断点。
如 break temp.c:10 在源文件中的第10行停。
如 break temp.c:main 调用main()函数前设置断点。
@删除指定的断点。Delete breakpoint <point-number>
Delete breakpoint 1 (删除1号的断点)
@禁止或启用断点。
Enable breakpoint <断点号>
disable breakpoint <断点号>
@i清除断点。
Clear :功能为删除上次停止处的断点。
Clear 10 (删除第10行的全部断点)
@观察点。 Watch <condition>
Condition 是触发观察点的条件。一量触发导致gdb中断。
4、查看运行时数据。
@print a 或者 p a.
P 'f2.c'::x (f2.c中的全局变量x的值)
P 'f2.c'::sum::x (f2.c中的sum函数的局部变量x的值)
@对程序中函数的调用 。
Print func(arg1,arg2.....)
@查看表达式的值。
Print <expression>
如:print a-b
@查看数组的值。
Print <array-name>
@
5、改变程序的执行。
@修改变量的值。
Print <expr>
或者
Set <expr>
@跳转执行。
Jump <location>
@信号的产生及处理。
Singal <signum> signum的值通常从1到15运行。
Handle <sig-name> <可选参数>这是为控制信号的处理。
如 handle SIGPIPE stop print
@强制高手函数。
Call func(arg1,arg2...)
用法与print的区别是如果函数返回void ,call 不显示,而print则显示函数返回值,并
把该存入数据中。
@强制函数返回。
Return 54123
6、gdb高级应用。
@产生corer 文件,因为当运行错误时都会产生一个的文件,特别是在gdb中运行,gdb
外运行,开启这个功能的命令是:ulimit -c unlimited
@跟踪栈上数据。
打印些栈时的命令是:backtrace
Frame 1 :查看1号frame下。
然后再用info locals..
@绑定运行进程。
首先:运行一个程序。然后再绑定一个进程。如:gdb text8 11 。还可以 这样来进,不
是在gdb中进的(gdb)attach 11
离开进程的命令:(gdb)detach
@源文件搜索。
Search regexp
Reverse-search regexp
Print $_
@机器语言工具。
@其他有用的调试命令。
Pwd cd quit shell 【commandline】
Show language:查看当前的语言环境。
Info frame:查看当前函数的程序语言。
Info source :查看当前文件的程序语言。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
GDB的极致运用
0. 前言GDB(GNU Debugg
编程珠玑 文件名 c程序 -
gdb学习0:gdb的gui调试窗口与gdb命令行的切换
有错的地方,或者不同意见的,烦请留言,或
gdb tui gui linux gdb调试 -
gdb学习1:初识gdb
(为了看起来比较舒服,罗里吧嗦的东西,我就不往上面粘贴了,以后都是这样,不再解
gdb #include 可执行文件 段错误 -
gdb使用的python gdb python脚本
调试python脚本一般可通过记录log和使用python自带的pdb模块完成, 但凡事总有例外,在以下三种情况时上述方法就无能为力了。 1 段错误 2 运行中的daemon程序 3 core dump 这个时候就需祭出gdb进行调试。python2.6的源码中
gdb使用的python Linux gdb Python xml python