程序运行正常。当我设置断点时,会生成分段错误。是我还是GDB?在运行时,这永远不会发生,如果我只实例化一个对象,那么没有问题。
我在ubuntu x86_64 karmic考拉上使用QtCreator。
UPDATE1:
我制作了一个包含该类简化版的小程序。您可以在以下网址下载:
只需在名为drawChart()的函数的第一行放置一个断点,然后单步执行以查看段错误发生
UPDATE2:这是另一个小程序,但它实际上与mandlebrot示例相同,但它仍在发生。你可以用mandlebrot来区分它,看看差别很小。
答案 0 :(得分:2)
回答你的问题:是的,你应该能够使用GDB调试多个线程。这取决于并发设计是否合理。
您的线程可能会访问的数据存在竞争条件。正常运行程序时可能无法显示问题,但附加调试程序会更改计时和计划。即便如此,您应该能够使用调试器在发生段错误时中断。了解这种情况可以告诉您有关种族状况或腐败的信息,无论情况如何。
值得研究的是,即使它在大多数“运行时”条件下都没有发生,它也可能在不同的系统负载条件下出现。
答案 1 :(得分:0)
你是从多个线程调用Qt的绘图代码吗? (特别是小部件方法)
http://doc.qt.nokia.com/4.3/threads.html#reentrancy-and-thread-safety
似乎Qt就像GTK +,你应该只从一个线程(特别是主线程)触摸GUI东西
我对Qt不太熟悉,无法为您提供有关如何更改代码的建议,但我建议将其更改为基于事件(即渲染开始以响应事件,然后在主要事件中触发事件线程完成后,每个线程都有自己的主循环)这样你就可以完全避免互斥和同步。