如何从多个线程/ intr调试打印

时间:2015-02-02 14:32:52

标签: c linux multithreading

我试图通过将打印件放在多个中断(软件)来进行调试。我看到这些打印件都是从两个线程重叠的。

我想打印一些时间/刻度,以确保两个线程同时运行。

我使用了jiffies,但我没有在时间上得到适当的改变。对于多个中断,我看到相同的勾号。

1 个答案:

答案 0 :(得分:0)

这是标记的linux,所以我会给你一个linux不可移植的答案,因为据我所知,没有一种真正便携的方法可以做到这一点:

  • 您可以使用pthread_self()并打印出来。它是一个不透明的类型,但您可以将其转换为void *并且可以在Linux上运行您的唯一目的是区分线程 - 不要使用它其他任何事情。

  • 您可以使用gettid()这是一个Linux特定的调用,它获取与Linux下的线程关联的进程号。没错,Linux下的每个主题都有一个隐藏的' PID,gettid()返回它。这是您可以显示ps的线程ID。这略微恶心。

确保您拨打的电话是线程安全的。 sprintf没问题。 syslog绝对不是线程安全的(我已经被它咬了)。因此,你需要一个互斥量来保护它。