in XNA

XNA – 如何對 ContenProcessor 偵錯(Debug)

今天再試著改寫 HeightmapCollision 範例裡的 TerrainProcessor
想讓它處理 HeightMap 時,可以自行尋找對應的紋理圖~
怎知,似乎再處理擋名的時候出了問題…
下意識的在該 code 附近下個中斷點,準備一覽 run time 時的狀況。

疑?
程式並沒有停下來,一樣只報個錯誤。
看來這招無效的XDD

這種時候當然直接找咕狗大神,很幸運地,幾分鐘就找到解答了
由於 ContentProcessor 是屬於編譯成類似 DLL 之後,給其它專案使用
這樣一來,自然沒有時間點可以除錯囉~


How To: Write a Custom Importer and Processor
想直接看重點就尋找「Debugging Custom Importers and Processors」,跳到該段落

注意,「起始外部程式」這個功能,在 Microsoft Visual C# 2005 Express Edition 是無法使用的樣子。
因為解決方案就得要用到這個功能,所以…
去問 M$ 吧!

就以 HeightmapCollision 這個專案作為範例吧~
我將這方案丟在「C:\~TEMP\HeightmapCollision\」

開啟「HeightmapCollisionWindows.sln」應該會有…
「HeightmapCollision」和
「HeightmapCollisionPipeline」這兩個方案。
(以下簡稱HC和HCP)
HCP 底下的 TerrainProcessor 就是我們這次實驗的目標。
接著,進入 HCP 的專案屬性頁面,切換到「偵錯」的分頁…

「起始動作」的預設應該是「起始專案」,將它改成「起始外部程式」。
並且選取「MSBuild.exe」的檔案路徑,以我的電腦來說,完整路徑為…
「C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe」

接著,看到下面「起始選項」裡的「命令列的引數」。
填入用來偵錯用的專案擋(.csproj)的路徑,相對絕對位置皆可,建議用完整路徑就好。
以我的範例來說,就該填入…
「C:\~TEMP\HeightmapCollision\HeightmapCollision\HeightmapCollisionWindows.csproj」
這裡請注意,完整路徑如果太長,請想辦法丟到比較前面的地方,像是 C 槽底下。

如果設定好,應該像是這樣~

接著在 TerrainProcessor 裡面設定一個中斷點準備試驗~



最後,對 HCP
偵錯,注意,不是 HC 喔!
HCP 偵錯時會呼叫 MSBuild 去編譯 HC。

偵錯時應該會跑出一個 Console 視窗,接著漂亮地停在中斷點!
接著就隨你看囉~

–End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.