r 运行程序(只在第一个断点处暂停程序)
c 继续执行 (在每个断点处停下来)
i b 列出所有的断点以及断点信息 (info breakpoints) 【快捷方式 : i + b + Tab键(补全) 】
b <函数名 | 行号 | 地址> 打断点
s 单步进入(step into遇到函数进入) s <函数名 | 行号 | 地址>追踪到指定点
n 单步追踪(step over遇到函数不进入)
d <函数名 | 行号 | 地址> 删除断点 d 删除所有断点
diplay /i $pc 列出每一步的汇编的信息 (取消显示汇编的信息--------------- undisplay)
p <变量名> 打印变量或全局变量的名称 p *a@10 ----------打印数组a的10个元素 p x=4 修改运行时变量x的值为4 ,print &x 打印x的地址,print *address打印地址的详细值
l 16 列出16行附近的代码 l file :N查看指定文件的代码
#l命令大全:
l + 往后显示源代码 l - 往前显示源代码
l <函数名> 列出函数名的原代码
set listsize 30 一次显示源代码(30行)
search <查找内容> 向下查找 rev <查找内容> 向上查找
pwd 显示当前代码所在的文件路径 dir <要添加的路径位置> 添加gdb的查找路径 cd <要切换的路径位置> 切换当前gdb的代码调试的路径
bt 回溯命令(backtrace) 打印出函数调用栈的信息-------------(它还显示了函数所在的文件路径,及函数所在的行号)
/**备注:
1.Working directory /usr/lmj/openjdk7/openjdk/build/bin. 我运行的是/usr/lmj/openjdk7/openjdk/build/bin/java 的二进制代码
2.../../../../src/share/bin/main.c:100 程序的源代码在根目录下:/usr/lmj/openjdk7/OpenJDK/src/share/bin/main.c:100
3.main (argc=5, argv=0x7fffffffe538) argc
*/
finish 跳出函数,结束循环 until 【简写: u -----结束当前循环】
j 5 跳转执行到第五行(堆栈内容不会变------因而慎用。)
Enter键执行上一个命令 Tab 命令补全键