我试图通过将打印放入多个中断(软件)中进行调试。我看到这些打印与两个线程重叠。
我想打印一些时间/刻度以确保两个线程同时运行。
我使用了jiffies,但当时我没有得到适当的改变。我看到多个中断有相同的刻度。
最佳答案
这被标记为 linux,所以我将为您提供一个 linux 不可移植的答案,因为据我所知,没有真正可移植的方法来执行此操作:
您可以使用
pthread_self()
,并打印它。它是一种不透明类型,但您可以将其转换为void *
,并且可以在 Linux 上运行,前提是您唯一的目的是区分线程 - 不要将其用于任何用途否则。您可以使用
gettid()
,这是一个特定于 Linux 的调用,用于获取与 Linux 下的线程关联的进程号。没错,Linux 下的每个线程都有一个“隐藏”的 PID,gettid()
返回它。这是您可以通过ps
显示的线程 ID。这稍微不那么恶心。
确保您进行的调用是线程安全的。 sprintf
没问题。 syslog
绝对不是线程安全的(我已经被这个问题困扰了)。因此,您需要一个互斥锁来保护这一点。
关于c - 如何调试多线程/intr 的打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280029/