调试多线程程序提示

时间:2014-02-26 05:29:48

标签: c linux multithreading debugging gdb

我想知道如何有效地调试multi-threaded programs

到目前为止我做了什么:

  
      
  1. 我阅读了一些gdb引用,但所有人都没有谈及multi-thread debuging。
  2.   
  3. 我使用gdb来调试我的c ++程序。
  4.   
  5. linux thread reference
  6.   

你的分享技巧是什么?

技能

  
      
  1. 1>很好地理解代码结构。 2>按线程调试线程。 3>就实施的确切时间戳而言。
  2.   

PS: approch仍然无法解决我的问题。

2 个答案:

答案 0 :(得分:0)

  1. 禁用看门狗
  2. 为每个帖子分配唯一的ID /名称。这样你就可以在任何函数中获得线程id,并确定哪个线程执行它。
  3. 了解如何在Visual Studio中使用线程窗口: http://msdn.microsoft.com/en-us/library/w15yf86f.aspx

答案 1 :(得分:0)

使用调试器来理解程序可能适用于单线程系统。

对于涉及多个线程的问题,它肯定不起作用(好)。这是每个设计,因为人性是单线程的。

所以进入一个多线程系统:

  1. 通过阅读和理解来源,识别所有线程以及它们如何依赖另一个线程。
  2. 自己调试每个线程。这可能意味着禁用或同步其他线程。
  3. 根据对不添加同步实施的确切时间戳添加详细日志记录
  4. 这种方法遵循一次做一件事的范例。