linux系统,两个rs485端口,~50个设备连接在这两个端口上。~系统中来自linux本身的100个进程。4核心臂。在许多方面,它就像一个linux桌面,我们的应用程序运行。可能会变得很忙,比如你在linux下打开办公室的那一刻。
他们不想回到进程,因为使用相同名称的1.3进程是令人困惑的。2.我们不知道如何将gdb附加到要调试的进程。如果只有一个过程,就更容易了。
如果你们能帮我处理这些
Q1:我想我们可以更改进程名,对吗?或者为每个进程创建pid文件,我是新手。
Q2:如果您有三个同名的进程,那么调试有多难?特别是我想调试子进程,如何在gdb中做到这一点?我是否可以在代码中设置断点,表示这是个子元素,在fork()之后?
如果我在fork()之后更改子进程名,那么如何调试子进程名呢?
Q3:为什么线程可以在没有核心文件的情况下死掉,而主进程/线程总是可以生成代码文件?
问题4:在这种情况下,如果您使用线程而不是进程,您可以得到什么?(在我看来,这只会带来麻烦。)
Q5:通过线程或进程命名管道,性能差异很大吗?
非常感谢!
发布于 2014-04-19 17:18:04
开发多线程应用程序要困难得多,可能对您的团队来说更早。回到单独的过程方法。
1)什么?
2)通过pid将gdb附加到正在运行的进程中。
3)可以直接在线程之间传递数据,共享内存
4)命名管道在这两种情况下都很慢,不需要使用线程
发布于 2014-04-19 17:19:08
Q1 -进程名只是可执行文件的名称。你可能不想改变它。不过,您可以跟踪pid文件中每个实例的pid。
Q2 -在不同的进程中拥有东西应该会使调试变得更容易一些,因为它减少了潜在的交互。注意,这在很大程度上是一种主观观点。Gdb可以为pid附加一个命令行选项。
Q3 --这将取决于为什么事情正在消亡。除非您正在处理信号处理程序,否则Seg故障和类似的故障应该会导致两者终止。
当大量的交互活动、通信或同步或大量的创建/破坏正在进行时,Q4线程往往更高效。
Q5 --不明白为什么会有任何显著的差异。在这样或那样的情况下,图片的某些部分会更快,但我希望最终的结果是收支平衡。
编辑:正如Basilevs所建议的-回到过程。它们更容易使用,而您以前也让它们工作过。
https://stackoverflow.com/questions/23172908
复制相似问题