2010-11-01 86 views
1

當我通過逐步調試程序時,有時需要很長時間才能完成此步驟。這在項目開始時並沒有發生,所以很可能是由於我添加了一些東西。你能否給我指出如何解決這個問題。我注意到其中一個問題是由於主線程試圖繪製一個小部件。我的應用程序是多線程的(1後臺線程和1個主線程),所以我想知道它是否與此有關。感謝您的意見。通過調試程序執行程序需要很長時間

回答

2

gdb只是set scheduler-locking mode到所需的行爲。

在這種情況下,道:「模式優化了單步執行它停止其他線程。‘通過搶佔當前線程,而你正在加緊奪取提示’其他線程只有很少(或從不)獲得。當你踏上時有機會跑步。「

+0

偉大的答案。謝謝 – 2010-11-02 21:19:31

2

猜測:您的「後臺線程」與CPU使用率接近100%掛鉤嗎?

在您的主線程的行之間,調試器將允許後臺線程也「步」。如果後臺線程被掛起,它可能會運行很多指令,導致事情看起來沒有反應。

也許如果你的第二個線程連續做了這麼多的計算,這表明你的應用程序中有另一個問題需要修復。如果你能控制線程,你可能會看到你的調試器處理事情要好很多。

+0

我的程序實際上表示0%的CPU使用率。當它繪製一個小部件時,我懷疑它是直接在顯卡上完成的。 – 2010-11-01 20:45:32

+0

此外:當斷點需要時間返回時,我檢查了cpu的使用情況,發現我的應用程序沒有任何問題,但是當斷點沒有返回時gdb會上升到96%。 (我也有一個運行在我的系統上的虛擬機,它已啓用yield功能,我不知道這是否會產生影響) – 2010-11-01 21:11:34

+0

您正在調試哪個平臺?我在Windows機器上運氣不錯,但在Mac上它確實很糟糕。有很多內存似乎有幫助。 – jocull 2010-11-02 05:39:42