最近正在除錯多執行緒的程式,發現當其中某個執行緒被我設的斷點斷住時,似乎其它的執行緒都停止不作業了。
請問高手這樣是不是有問題啊?
謝謝!
uj5u.com熱心網友回復:
經測驗,當在子執行緒下斷點的時候,其他執行緒并不繼續作業,我想要的是子執行緒下斷點后,其他執行緒繼續作業,不受不影響。uj5u.com熱心網友回復:
https://www.cnblogs.com/lzpong/p/5881380.html 類似這篇文章所表達的意思。除錯器(如VS2008和老版GDB)往往只支持all-stop模式,除錯多執行緒程式時,如果某個執行緒斷在一個斷點上,你的除錯器會讓整個程式freeze,直到你continue這個執行緒,程式中的其他執行緒才會繼續運行。這個限制使得被除錯的程式不能夠像真實環境中那樣運行--當某個執行緒斷在一個斷點上,讓其他執行緒并行運行。
uj5u.com熱心網友回復:
各位大佬 有知道的幫忙解答下 謝謝。。uj5u.com熱心網友回復:
修改下除錯選項試試看
uj5u.com熱心網友回復:
感謝您的回答。經過測驗,發現其他執行緒還是暫時作業。請問有沒有可能通過代碼進行脫離的。uj5u.com熱心網友回復:
VS就是這樣的,沒辦法uj5u.com熱心網友回復:
不要斷點 使用 log 檔案uj5u.com熱心網友回復:
VS沒有別的辦法,除非你列印log日志分析問題吧uj5u.com熱心網友回復:
除錯肯定是這樣的,而且必須是這樣,你可以采用日志的方式進行跟蹤uj5u.com熱心網友回復:
建議一種替代方式,不知是否可行在斷點的地方添加如下陳述句:
while(true)
{
Sleep(10000);//
};
然后你不斷按<F5>繼續運行,其它執行緒就繼續運行
uj5u.com熱心網友回復:
你都debug了,還想并行,除錯得過來么?!!!在gdb在除錯時提供手動調度執行緒,可以通過命令實作手動多執行緒并行執行(假的)。 大概可以實作你想要的功能。
除錯嘛,總是要順序你才能看的清
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/26936.html
標籤:進程/線程/DLL
