LinuxSir.cn,穿越时空的Linuxsir!

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

关于GDBServer

[复制链接]
发表于 2005-2-18 09:25:17 | 显示全部楼层 |阅读模式
我想在一块ARM Linux 开发板上用GDBServer调试程序.
首先尝试PC机Linux系统(Fedora Core 1)上自带的gdbserver,
启动gdbserver:gdbserver :3000 Helloworld
启动gdb:gdb Helloworld
(gdb)target remote 192.168.0.30:3000
其中192.168.0.30是我本机的IP,对一个Helloworld进行调试,效果跟GDB直接调差不多。用一个多线程的程序尝试,出现错误退出。单步跟踪主函数发现停在pthread_join()函数处,如果在线程函数里设断点出现错误退出。
gdb错误信息:
(gdb) target remote 192.168.0.30:3000
Remote debugging using 192.168.0.30:3000
0x001bec50 in ?? ()
Breakpoint 1 at 0x8049158: file Angel.c, line 240.
(gdb) c
Continuing.
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
The program no longer exists.
(gdb)

gdbserver错误信息:
gdbserver :3000 angel_ice/src/angel_ice
Process angel_ice/src/angel_ice created; pid = 836
Remote debugging from host 192.168.0.30
Cannot find new threads: capability not available
Cannot find new threads: capability not available
Cannot find new threads: capability not available

Child terminated with signal = 5

Child terminated with signal = 0x46
GDBserver exiting
这个多线程程序直接用GDB调试没有问题。
于是我下载gdb6.3版自已编译,问题相同。GDBServer在调多线程程序时遇到的这个问题,向大家请教解决方法。
发表于 2005-3-14 22:49:36 | 显示全部楼层
GDBServer可以调试多线程的,
先运行程序, 再用ps查看要调试的线程/进程的ID
在控制台上输入: gdbserver 192.168.0.1:1234 --attach XXX 就可以调试了
XXX是进程的ID号
回复 支持 反对

使用道具 举报

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

本版积分规则

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