找回密码
 注册
查看: 797|回复: 6

关于gdb debug运行中的程序的问题

[复制链接]
发表于 2005-4-4 20:08:24 | 显示全部楼层 |阅读模式
有下面一段程序
//abc.c
#include <stdio.h>

int main(void)
{
     int i=0;
     printf("%d\n",i++);
     printf("%d\n",i++);
     printf("%d\n",i++);
     getchar();
     printf("%d\n",i++);
     printf("%d\n",i++);
     printf("%d\n",i);
    return 0
}

然后编译 abc.c

$gcc -g abc.c -o abc

之后./abc

他会显示:
0
1
2
这里停住等待你按键盘 按下之后输出
3
4
5

如果 我在他输出
0
1
2
这时候打开 gdb abc 刚才运行中程序那个pid号
是不是就可以开始调试刚才那个程序呢?
进入(gdb)提示符
(gdb)print i
会不会显示i的值?

正确的方法应该怎么做而不用杀死 刚才运行中的那个 abc程序呢?
 楼主| 发表于 2005-4-4 20:15:30 | 显示全部楼层
我知道用 gdb abc 就可以很轻松的调试 一个程序
break
run
然后print这样可以
对于运行中的程序
break
run
之后选y可以运行 但是回到刚才那个输出就变成
0
1
2
程序被kill

这边 gdb里面的程序重新 运行了

但是 我想要用gdb调试 运行中的程序 我初学 也许概念不是很清晰
回复

使用道具 举报

发表于 2005-4-5 07:48:52 | 显示全部楼层
用break可以设置断点,用run来运行程序,到了断点,要继续用cont命令!
回复

使用道具 举报

 楼主| 发表于 2005-4-5 08:58:55 | 显示全部楼层
那就是说 不能调试运行中的程序拉??
我想问调试一个已经运行的程序....而不是 运行程序调试
回复

使用道具 举报

发表于 2005-4-5 10:46:17 | 显示全部楼层
可以和一个正在运行的程序相连!
回复

使用道具 举报

 楼主| 发表于 2005-4-5 11:18:37 | 显示全部楼层
...我的问题 就是如何跟运行中得程序相连 然后访问他里面得变量
我看手册上有个
attach PID   命令 但是我在测试程序中用 但是p i得时候返回没有这个变量
回复

使用道具 举报

发表于 2005-4-6 10:01:28 | 显示全部楼层
用gdb -h看看,
或者你就用xxgdb,他是图形界面下的gdb,操作方便!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-9 02:48 , Processed in 0.033241 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表