C 编程 : Debugging with pthreads

标签 c multithreading debugging pthreads

最初对我来说最难适应的事情之一是我第一次在 C 中使用 pthreads 进行大量编程。我习惯于确切地知道要运行的下一行代码是什么,并且我的大部分调试技术都围绕着那种期待。

在 C 中使用 pthreads 进行调试有哪些好的技巧?您可以在没有任何附加工具、您使用的工具或任何其他有助于您调试的情况下建议个人方法。

附言我在 Linux 中使用 gcc 进行 C 编程,但不要因此而限制你的回答

最佳答案

Valgrind是查找竞争条件和 pthreads API 滥用的优秀工具。它保持程序内存(可能还有共享资源)访问的模型,并且即使错误是良性的(这当然意味着它会在以后的某个时候完全出乎意料地变得不那么良性)也会检测丢失的锁。

要使用它,您调用 valgrind --tool=helgrindhere is its manual .此外,还有 valgrind --tool=drd ( manual )。 Helgrind 和 DRD 使用不同的模型,因此他们检测重叠但可能不同的错误集。也可能出现误报。

无论如何,valgrind 为我节省了无数小时的调试时间(虽然不是全部时间:)。

关于C 编程 : Debugging with pthreads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/981011/

相关文章:

捕获 SIGTERM,并 sleep 阻止它工作

c - 错误 VgTs_WaitSys 在 Valgrind 中意味着什么?

Android 5 ADB通知转储错误数据

java - 什么是多线程环境中的忙自旋?

c# - 如何调试死锁?

javascript - 如何在我们编写 javascript 的脚本编辑器中的 SharePoint 中进行调试?

ios - 在真实设备上调试 iAd 时变绿

c - MPI 库 - 在数组上保存值时出现问题

c++ - 可以在 C++ 代码而非 C 代码上完成 'easily' 的编译器优化示例

c - *完全*相等的 double 为 (a==b) 返回 0