使用调试器逐步执行程序需要很长时间

时间:2010-11-01 19:18:36

标签: c++ multithreading qt gdb breakpoints

当我通过单步调试我的程序时,有时需要很长时间才能完成该步骤。这不是在项目开始时发生的,所以很可能是由于我添加了一些东西。你能否指点一下如何解决这个问题。我注意到其中一个问题是由于主线程试图绘制一个小部件。我的应用程序是多线程的(1个后台线程和1个主线程),所以我想知道它是否与此有关。感谢您的意见。

3 个答案:

答案 0 :(得分:2)

猜测:你的“后台线程”是否接近100%的CPU利用率?

在主线程的行之间,在步进时,调试器将允许后台线程也“步进”。如果后台线程被挂起,它可能会运行很多指令,导致事情看起来没有响应。

如果您的第二个线程连续执行那么多计算,可能表示您在应用程序中遇到了另一个需要修复的问题。如果你控制了那个线程,你可能会看到你的调试器处理得更好。

答案 1 :(得分:2)

使用gdb只需要set scheduler-locking mode到期望的行为。

在这种情况下:“步骤模式优化单步执行。它会阻止其他线程通过在您踩踏时抢占当前线程来”抓住提示“。其他线程很少(或者永远)在你走的时候有机会跑。“

答案 2 :(得分:1)

我问了一个关于visual studio的非常相似的问题:VS2010 debugger takes an unreasonable amount of time

没有真正的答案。您也可以在此处找到与以前版本的IDE类似的问题。