LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1480|回复: 6

gdb调试守护进程问题

[复制链接]
发表于 2006-3-2 10:45:38 | 显示全部楼层 |阅读模式
用gdb怎么调试一个刚开始就运行为守护进程的程序了?程序大致如下:
main()
{
。。。。
daemon_init()
。。。。
}
一用gdb运行就出现如下的信息:
Starting program: /home/shuimuyu/test
Error in re-setting breakpoint 1:
Cannot access memory at address 0x123
Error in re-setting breakpoint 1:
Cannot access memory at address 0x123
无论断点设置在哪个地方都不行
这是怎么回事?
发表于 2006-3-2 13:13:18 | 显示全部楼层
方法一,注释daemon_init
方法二,弄个命令行参数比如-d表示debug,此时不调用daemon_init
方法三,先启动程序,看看pid,然后在gdb里attach之
方法四,还没想到。。。
回复 支持 反对

使用道具 举报

发表于 2006-3-2 14:50:32 | 显示全部楼层
你是怎么用 gdb 调试它的,能具体点吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-3 08:48:05 | 显示全部楼层
X11说的好像有点可行,我试试看先
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-3 10:12:14 | 显示全部楼层
把进入守护进程的函数注释掉可以进一步调试,但现在还有两个问题:
1、因为我这个是多文件的,在mian()函数中用到了别的文件中的函数,我想setp进去,结果显示如下:
      0x0804c8fb in initlocklist () at eval.c:41
41      eval.c: No such file or directory.
        in eval.c
initlocklist () 是我要进入的函数。
这是为什么啊
2、因为我这个是网络相关的,服务器端在接到连接后,马上fork出一个新的进程进行处理,gdb能进入子进程么?用attach好像不行。
各位有什么好的办法么?

谢谢各位了!
回复 支持 反对

使用道具 举报

发表于 2006-3-3 11:43:37 | 显示全部楼层
源代码路径设置好了吗? 用 list 命令显示到时入的文件看看成不成,如果不成则用 set dir
命令设置。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-3 15:42:09 | 显示全部楼层
工作目录没问题,而且这个函数和主函数的文件在同一个目录下,而如果s之后再list,显示如下:
(gdb) l
36      in eval.c
这个文件是不是gdb自己的什么文件啊?
望达人释疑!!不胜感激
回复 支持 反对

使用道具 举报

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

本版积分规则

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