????????并行編程可以提高應(yīng)用程序的性能,但是調(diào)試起來會更困難,這一點在之前的章節(jié)中我們已經(jīng)有了很直觀的感受。對于程序而言,保證程序的正確性和保證性能同樣重要。
????????本章將介紹可以在 Visual Studio 中的調(diào)試工具(包括 Thread 窗口、Tasks 窗口和 Concurrency Visulizer)調(diào)試線程。實際上在我看來使用 VS 進行調(diào)試并不理想,對于我們 Unity 程序來說有更好的方式。但是技多不壓身,了解一下也是可以的。
????????? 本教程學(xué)習(xí)工程:魔術(shù)師Dix / HandsOnParallelProgramming · GitCode
1、使用 Visual Sutdio 2019 2022 進行調(diào)試
????????書上用的是 VS2019,但是都什么年代了,還在使用 2019 ? 我們直接上 2022 !
????????線程調(diào)試窗口打開方式如下:
?????????調(diào)試 -> 窗口 -> 線程。
????????之后我們打上斷點就能調(diào)試了,線程窗口如下所示:
?????????PS:在 VS2022 中對 Untiy 打斷點的方式為:調(diào)試 -> 附加 Unity 調(diào)試程序。
2、如何調(diào)試線程
????????當(dāng)使用多個線程時,找出在特定時間執(zhí)行的是哪個線程就變得很重要,這使得我們能解決跨線程問題以及競爭狀況。
?????????線程打開如圖所示,也可以顯示斷點。最左邊的小旗子,表示標記線程??梢赃x擇左邊小旗子標記,然后就能選擇只顯示標記的線程。如果線程特別多的情況,這會非常方便。
?????????還有一個小窗口,在 調(diào)試 -> 窗口 -> 并行堆棧窗口,可以查到并行堆棧之類。
????????但是我實際用起來感覺作用不大,因為我最需要的2個功能:如何查看多線程的錯誤?如何查看多線程利用率?這兩個窗口都無法顯示出來,而且是只有斷點的情況才會生效。
3、并發(fā)可視化器 Concurrency Visualizer
????????書上提到了一個工具 Concurrency Visualizer ,我們可以直接在拓展中搜索,并安裝到 VS 2022 上:
?????????安裝沒有什么好說的,安裝完了我們在 分析 -> 并發(fā)可視化工具中使用。
?????????選擇附加到進程,并找到我們的程序即可。之后系統(tǒng)會自動收集數(shù)據(jù),然后我們運行 Unity 。當(dāng)我們不需要測試時,停止收集,就能得到一個可視化的面板,表示性能:
?????????我們可以從里面看到各種參數(shù)、線程的消耗等。
????????相關(guān)介紹可以看篇文檔:
利用VisualStudio2010中的ConcurrencyVisualizer優(yōu)化性能 - 百度文庫https://wenku.baidu.com/view/840f5972ab956bec0975f46527d3240c8547a176.html?_wkts_=1690171463334&bdQuery=Concurrency+Visualizer
????????我的評價:沒用,不如 Unity 的 Profile 。
4、本章小節(jié)
????????本章簡單介紹了幾個調(diào)試工具和窗口,但是我感覺都沒啥大用。如果只是為了看堆棧,普通的斷點也能調(diào)試進去。如果看性能的話,顯然 Unity 的 Profile 是更好的選擇。至于如何使用 Unity Profile 看多線程的性能,這個我們后面再介紹。????????
????????總之都是非常雞肋。文章來源:http://www.zghlxwxcb.cn/news/detail-605629.html
????????本教程學(xué)習(xí)工程:魔術(shù)師Dix / HandsOnParallelProgramming · GitCode文章來源地址http://www.zghlxwxcb.cn/news/detail-605629.html
到了這里,關(guān)于【C#】并行編程實戰(zhàn):使用 Visual Studio 調(diào)試任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!