1) 查看宏
默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的:
编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”,必须为“-g3”,查看宏的值使用命令p,这和查看变量的值的方法相同,如果想查看宏的定义,使用“-macro expand”命令即可
2) 如果执行一连串命令?
这个借助命令“source”即可,“source”的参数为一个存有一串命令的文件名
3) 如何同时给多个函数打断点?
使用“rb”命令,如果执行“rb”时不带参数,则表示在所有函数处打一个断点,“rb”后面可以接一个符合正则表达式的参数,用来对符合正则表达式的所有函数打断点
4) .gdbinit文件
GDB在启动时,会在用户主目录中寻找这个文件,并执行该文件中所有命令,文件格式为:
define command-alias
command
end
如要给“b main”取一个别名“bm”:
define bm
b main
end
此外,还可以给这个别名加上帮助说明性文字,格式为:
document bm
帮助说明性文字
end
如,给“bm”别名添加帮助说明性文字:
document bm
break at main() function
end
这样,在使用“help bm”时,GDB就会打印出“break at main() function”
5) 自定义命令
除了在.gdbinit文件自定义命令外,还可以直接在GDB运行环境定义命令,语法相同
6) 定义命令钩子
钩子用来在执行某个命令前或命令后,先执行某个或某些命令。假如想在print命令前显示一段“----------”,则:
define hook-print
echo ----------\n
end
注意“hook-”后接的必须是命令全称,不能是缩写。
如果想在命令执行完,再执行某个或某些命令,则:
#define hookpost-print
echo ----------\n
end
7) GDB中循环
GDB支持if/else/while/loop_break/loop_continue,如:
(gdb) set $x=1
(gdb) while $x==1
>p $x
>set $x=0
>p $x
>end
-----------------
b$8 = 1
-----------------
b$9 = 0
layout asm 仅显示汇编代码窗口
layout split 显示源代码和汇编代码窗口
layout regs 显示寄存器和源代码窗口,或者寄存器和汇编代码窗口
layout next , layout prev 切换窗口
C+l 刷新屏幕
C-x 1 只用一个窗口
C-x 2 用两个窗口,按多次会有不同两个窗口的组合形式
C-x o active 窗口转移
C-x s 进入和退出TUI SingleKey 模式
C-x a 退出TUI模式,回到传统模式
阅读(453) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的:
编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”,必须为“-g3”,查看宏的值使用命令p,这和查看变量的值的方法相同,如果想查看宏的定义,使用“-macro expand”命令即可
2) 如果执行一连串命令?
这个借助命令“source”即可,“source”的参数为一个存有一串命令的文件名
3) 如何同时给多个函数打断点?
使用“rb”命令,如果执行“rb”时不带参数,则表示在所有函数处打一个断点,“rb”后面可以接一个符合正则表达式的参数,用来对符合正则表达式的所有函数打断点
4) .gdbinit文件
GDB在启动时,会在用户主目录中寻找这个文件,并执行该文件中所有命令,文件格式为:
define command-alias
command
end
如要给“b main”取一个别名“bm”:
define bm
b main
end
此外,还可以给这个别名加上帮助说明性文字,格式为:
document bm
帮助说明性文字
end
如,给“bm”别名添加帮助说明性文字:
document bm
break at main() function
end
这样,在使用“help bm”时,GDB就会打印出“break at main() function”
5) 自定义命令
除了在.gdbinit文件自定义命令外,还可以直接在GDB运行环境定义命令,语法相同
6) 定义命令钩子
钩子用来在执行某个命令前或命令后,先执行某个或某些命令。假如想在print命令前显示一段“----------”,则:
define hook-print
echo ----------\n
end
注意“hook-”后接的必须是命令全称,不能是缩写。
如果想在命令执行完,再执行某个或某些命令,则:
#define hookpost-print
echo ----------\n
end
7) GDB中循环
GDB支持if/else/while/loop_break/loop_continue,如:
(gdb) set $x=1
(gdb) while $x==1
>p $x
>set $x=0
>p $x
>end
-----------------
b$8 = 1
-----------------
b$9 = 0
8)TUI模式
layout src 仅显示源代码窗口layout asm 仅显示汇编代码窗口
layout split 显示源代码和汇编代码窗口
layout regs 显示寄存器和源代码窗口,或者寄存器和汇编代码窗口
layout next , layout prev 切换窗口
C+l 刷新屏幕
C-x 1 只用一个窗口
C-x 2 用两个窗口,按多次会有不同两个窗口的组合形式
C-x o active 窗口转移
C-x s 进入和退出TUI SingleKey 模式
C-x a 退出TUI模式,回到传统模式
相关热门文章
给主人留下些什么吧!~~
评论热议