main () at staticvariable.c:19
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
*/
#include
static 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 |
执行下一行 |
| print |
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 |
执行下一行 |