GDB帮助客户端 - 服务器

时间:2012-02-25 07:02:02

标签: debugging networking gdb segmentation-fault

我在计算机网络课程中,我正在编写一个简单的服务器,它只发送和接收来自客户端的消息(已给出)。但是,当给定客户端连接时,我的服务器会出现分段错误。如何运行GDB来调试它?我尝试使用gdb运行服务器,但它只是挂起,因为我的服务器中有一个无限的while循环,我不知道如何同时运行客户端来触发segfault。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

  

我不知道如何同时运行客户端来触发段错误。

简单:您打开另一个窗口,然后从那里运行客户端

答案 1 :(得分:0)

如果您的服务器为每个连接的客户端生成(fork())单独的进程,您可能需要设置跟随fork模式:http://www.delorie.com/gnu/docs/gdb/gdb_26.html “set follow-fork-mode child”将在accept()和fork()之后立即开始调试生成的进程。

另一种选择是分析核心文件。默认情况下,Coredumps大多数都处于禁用状态,因此您需要启用它们:

ulimit -c unlimited

运行你的服务器,让它进行segfault并启动gdb,将它指向core和你的二进制文件:

gdb -c ./core.xxxx ./server