【发布时间】:2016-09-01 11:24:02
【问题描述】:
我的代码出现死锁,我想调试它。 由于某些原因,我无法在此处对其进行重构。这个问题只在我的客户身上重现。
我的想法是每小时轮询一次线程并检查它们是否卡在有问题的代码中。我知道有一个选项可以使用__line__ 和__file__ 打印当前代码行。我可以对另一个线程做吗?
以我为例 - 我希望我的线程对其他线程进行采样并打印它们当前的代码行。
编辑 - 我的平台是 RHEL 5.6,代码是 C++。
【问题讨论】:
-
你的平台是什么?
-
__line__和__file__只是文字。您可以将它们输入一个字符串并将该字符串“发送”到另一个线程。 -
@Hayt OP 不知道死锁发生在哪里。否则 OP 不会提出问题。
-
死锁检测并不是那么容易,有时它意味着 S.O.帮助。从内部应用程序本身检查死锁,这是不可能的。也许您可以构建一个与您的应用程序交互的外部工具,利用一些 S.O. api。或者,当代码卡住时,可能会将调试程序附加到执行代码上。其实我在考虑看门狗
-
@Hayt 除非我们知道平台与
__LINE__和__FILE__无关
标签: c++ c multithreading