簡體   English   中英

我該如何調試多線程C ++程序的哪個部分花費過多時間?

[英]How can I debug what portion of a multi-threaded C++ program is taking excessive time?

我遇到一種情況,正在CentOS(Linux)中使用多線程C ++程序,並試圖找出程序的哪一部分是“ CPU資源消耗”。 我已經使用控制台中的“ top”命令標識了有問題的線程。 現在我的問題是,如何找出該線程中代碼的哪一部分正在占用CPU? 您可以推薦任何有助於此任務的調試工具/方法嗎? 如果它可以告訴我程序中執行得最多的行,那將很有幫助。

我想看看是否可以對有問題的代碼執行優化,並且/或者看看是否發生了某些錯誤。 該進程本身似乎正常工作,除了它會減慢速度並占用CPU過多的事實。

我已經研究了valgrind的工具,但還無法提供任何有用的信息(盡管valgrind有很多工具)。 到目前為止,我已經試用了helgrind工具,並查看了http://valgrind.org/docs/manual/manual.html以獲得進一步的指導。 如果我能弄清楚如何使用callgrind工具,它似乎很有用。 如果有人可以在程序上告訴我如何調試valgrind來調試代碼的哪些部分,或者為我提供好的資源,則將不勝感激。

使用探查器另外,您可以編寫自己的時序代碼,但這會帶來不准確和錯誤的效率。

有多種工具可為您提供這些信息以及更多信息-有時信息過多。 如果您在IA(Intel體系結構)環境中工作,則擁有VTune,Intel編譯器提供了一整套具有各種檢測開銷的分析工具,並且https:// software上有很多免費的實驗工具.intel.com / en-us / whatif / 如果您使用的是非IA體系結構,那么可以使用比top更好的各種編譯器和其他分析工具。 還有各種教授工具。

英特爾的IA工具價格昂貴,但有各種學生許可證和其他折扣許可證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM