2013-05-31 50 views
2

我对unix编程很陌生,所以请耐心等待。 :)unix管道有效的调试技术?

我想在两个进程之间传递数据。我打算使用命名管道,但是阅读了这些“半双工”管道,这非常有趣,所以我想我会先给他们一个尝试。

我有两个问题,这些管道迄今:

  1. 我还没有想出如何让execlp从我的子进程
  2. 即使我可以运行其他应用程序,调试是艰难的,因为我只能在父进程中设置断点

我确信这些问题有其原因。我开始怀疑忘记它们是否合理,只使用命名管道,这样我就可以在单独的eclipse实例中调试每个应用程序。

如果有任何相关的信息,请让我知道。我使用的代码基本上是在tldp.org上找到的代码。

编辑 - 我将我的问题重新命名为unix管道。我假定对于命名管道,我不必使用fork(),但到目前为止我看到的所有示例都需要它。所以不管是半双工还是命名管道,我都需要能够以某种方式调试子进程!

EDIT#2 - this example清楚地表明,我之前在IBM链接上看到的关于命名管道的内容并不一定是真的。

回答

1

我推荐两个工具:

  • strace -ff应该给你所有显著事件的跟踪,让您在详细研究发生了什么事情,即所有读取和写入;

  • lsof允许您转储相关进程的文件描述符,清楚地显示连接到其他什么,特别是如果您忘记了某些描述符和整个事件死锁。

+0

谢谢,我会在我的代码运行后看看这些工具! – Dave