19 {
$1 = 0
(gdb) n
28 printf("i = :%d\n", i);
(gdb) n
19 {
(gdb) n
28 printf("i = :%d\n", i);
(gdb) n
19 {
(gdb) n
28 printf("i = :%d\n", i);
(gdb) n
i = :10
j = :1
Breakpoint 1, main () at staticvariable.c:32
32 }
$2 = 100
(gdb) n
0x0014c4d3 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
(gdb) n
Single stepping until exit from function __libc_start_main,
which has no line number information.
[Inferior 1 (process 2950) exited normally]
/* FileName: staticvariable.c * Description: 用来测试静态变量的输出结果。 * Author: Howard * Date: 2013-12-05 * Version: v1.0 */ #includestatic int j = 0; int func1(void) { static int i = 0; i ++; return i; } void func2(void) { j = 0; j ++; } int main(void) { int k; int i; for (k=0; k<10; k++){ i = func1(); func2(); } k = 100; printf("i = :%d\n", i); printf("j = :%d\n", j); return 0; }
常用命令及省略形式
| 命令 | 简写形式 | 说明 |
| backtrace | bt、where | 显示backtrace |
| break | b | 设置断点 |
| continue | c | 继续运行 |
| delete | d | 删除断点 |
| finish | 运行到函数结束处 | |
| info breakpoints | info b | 显示断点信息 |
| next | n | 执行下一行 |
| p | 显示表达式 | |
| run | r | 运行程序 |
| step | s | 一次执行一行,但是可以进入到函数内部(这点与next不同) |
| x | 显示内存内容 | |
| until | u | 执行到指定的行 |
| 命令 | 简写形式 | 说明 |
| directory | dir | 插入目录 |
| disable | dis | 禁用断点 |
| down | do | 在当前调用栈中选择要显示的栈帧 |
| edit | e | 编辑问价或函数 |
| frame | f | 选择要显示的栈帧 |
| forward-search | fo | 向前搜索 |
| generate-core-file | gcore | 生成内核转储 |
| help | h | 显示帮助一栏 |
| info | i | 显示信息 |
| list | l | 显示函数或行 |
| nexti | ni | 执行下一行(以汇编代码为单位) |
| print-object | po | 显示目标信息 |
| sharedlibrary | share | 加载共享库的符号 |
| stepi | si | 执行下一行 |