【问题标题】:how to debug/trace socket programming如何调试/跟踪套接字编程
【发布时间】:2017-07-28 08:58:24
【问题描述】:

在我的项目中有很多 C 文件。 在这里,我必须使用套接字编程从我的进程发送一个缓冲区来处理。我尝试使用 send 系统调用发送缓冲区,但尽管数据/缓冲区被传输到进程,但它返回零。

在wireshark中我可以看到传入和传出的数据包。

实际上 send 系统调用应该返回发送的字节数,但我收到了零。那么它是如何从我的进程传输到另一个进程的呢?

有人可以帮我解决这个问题吗?如何调试/理解(发送调用到另一个进程接收调用后在 linux 中涉及/执行的步骤)。

至少建议我一些工具和步骤/程序来调试套接字编程。

【问题讨论】:

  • 我建议strace(系统调用跟踪器)。它将跟踪send 系统调用以及其他系统调用。
  • 能否请您使用示例程序详细说明一下。我们如何从发送进程跟踪到接收进程,以及如果我们有多个接收者,我们如何说它是接收者。@ks1322
  • 您必须分别跟踪所有进程:发送者和每个接收者(如果它们是多个)。

标签: c linux sockets linux-kernel


【解决方案1】:

Socket 编程与任何其他编程没有太大区别。调试它的规则和往常一样:使用调试器并逐步执行代码。 TCP/IP 的另一种选择工具是您已经知道的wireshark。

但要真正获得 SO 的帮助,您必须展示使用过的代码,最好是 Minimal, Complete, and Verifiable example,以便其他人可以对其进行测试以更轻松地识别问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 2021-08-08
    • 2016-10-15
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多