0

我是一个初学者,我想了解一些用 C 编写的客户端-服务器应用程序的基础知识(我了解用 Java、PHP 等编写的基于 Web 的服务器客户端应用程序)。

更具体地说,我说的是 Zabbix,它是一个客户端-服务器工具(Zabbix_server 是一个服务器,zabbix_agentd 是一个客户端,都是用 C 编写的)。

Zabbix_server 向 zabbix_agentd 请求数据,zabbix_agents 相应地响应。

我在 Eclipse 上导入了 zabbix 代码,并尝试调试以理解代码。在 Eclipse 上完整执行 zabbix_agentd 刚刚成功启动了守护进程并创建了一个子进程。但是当我检查日志时,我发现正在调用不同的函数,而这些函数在调试时并没有出现。这意味着,这些函数被某个进程调用,可能是 inetd 等(如果我错了,请纠正我)。我试图在 RHEL 6.4 OS 上找到 inetd,但在哪里找不到(使用“service inetd status”、“find”)。

那么,这些函数是如何被调用的呢?谁能给我一些想法?请建议我如何使用这些调用请求来进一步调试我的客户端应用程序。

我在调试 Eclipse 时注意到的一件事是,在调用 fork() 后出现以下错误:

No source available for "fork() at 0x36ca0acbc0"

我无法理解上述错误的影响,因为守护进程在此错误之后也继续工作。我浏览了不同人得到的类似错误,发现他们的二进制文件没有链接到源。但是,我的二进制文件也链接到源。我的意思是,扩展 zabbix_agentd 的二进制文件会显示几个 *.h 和 *.c 文件。

由于此错误会立即终止调试器,但此时的代码行也是源文件的最后一行。所以,我不能说我是否需要注意这个错误。

这个错误是我无法查看被调用的其他函数的原因吗?

如果需要更多信息,请告诉我。

提前致谢。

问候, 罗希特

4

0 回答 0