目前分類:Visual Studio (3)

瀏覽方式: 標題列表 簡短摘要

平常用 Visual Studio 新增檔案的時候(例如:aspx、cs...),Visual Studio都會很聰明的產生出一模一樣的檔案,例如下面這張圖:

image

 

其實這是因為 Visual Studio 產生檔案時,是從一堆 Template 當中複製過來的。以上面這張圖為例,是在:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplatesCache\Web\CSharp\1033\WebForm.zip\CodeBeside.cs

 

所以如果希望檔案一產生出來就能夠有一些程式碼的話 (例如:加屬性、繼承其它類別...),可以直接修改這個檔案。

 

其它類型的檔案 Template 也能在這個路徑底下的子目錄找到:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplatesCache

AnferneeHardaway 發表在 痞客邦 留言(0) 人氣()

        之前研究過 pdb 檔案的作用,不過沒找到可以讀取它的方法。這個問題一直擱在心頭上,總算這兩天有看到相關的文章。原來安裝 Visual Studio 的時候就會連同 DIA Dump 範例一起安裝進來。只要把這個範例的方案檔打開,編譯,接著就可以做 Dump 的動作囉!

範例的路徑是:
%ProgramFiles(x86)%\Microsoft Visual Studio 8\DIA SDK\Samples\DIA2Dump\dia2dump.sln

        編譯完之後,開啟命令提示字元,將目錄切到 Debug 底下(跟 Dia2Dump.exe 同一層),然後輸入 Dia2Dump.exe "pdb檔案的路徑 + 檔名",再按下 Enter 就可以看到 pdb 的內容了。

 

執行 Dia2Dump.exe 命令

dumppdb1

 

 

果然有行號及原始碼檔案的位置

dumppdb2

 

[參考資料]

http://msdn.microsoft.com/en-us/library/b5ke49f5(v=VS.80).aspx

http://msdn.microsoft.com/en-us/library/ms229861.aspx

http://sourceforge.net/projects/pdbdump/

http://blogs.msdn.com/jmstall/archive/2005/08/25/pdb2xml.aspx

AnferneeHardaway 發表在 痞客邦 留言(0) 人氣()

    一直不是很了解.pdb檔(Program Database file),只知道它是用來偵錯的,但倒是從來沒有研究過裡面到底記載了什麼資訊。一直到今天有網友在偵錯時碰到問題,我才開始研究這個神奇的檔案。google了一下,找到這篇,原來pdb檔記錄了下面這些資訊:

1.source code file name
2.行號資訊
3.local variable name

而dll中則是記錄了這個pdb檔的位置,所以當我們按下F5進行偵錯時,會先到dll去找pdb的位置,然後再讀取pdb檔,接著依照pdb的記錄去找source code,然後就是我們看到的偵錯畫面。

除了dll內記錄的pdb檔位置之外,偵錯時還會去兩個地方找看看有沒有pdb可供載入,一個是專案的執行目錄,另一個則是vs的偵錯設定

pdb-location2

 

三個地方的先後順序應該是這樣的

1.執行目錄
2.ddl內記載的目錄
3.偵錯設定中的目錄

另外,也可以手動從「模組視窗」中手動載入

pdb-location5

 

但如果vs載入了pdb檔,但卻找不到pdb記錄的source code file,則vs會直接跳一個視窗叫你告訴它檔案在哪裡。

pdb-location4

 

最後,如果pdb載入了,也順利找到了原始檔,但原始檔卻被編輯過,那偵錯時就會讓人覺得怪怪的,這是因為原始程式碼檔案已經跟dll不符合的關係

 

 

不過讓我覺得很奇怪的是,即使我是在Release模式下去編譯,仍然會產出pdb檔,而且dll內也照樣記錄著pdb檔的位置。

用dumpbin看到的資訊

pdb-location3

 

 

查到這裡,大致上對pdb有了初步的認識,唯一覺得可惜的是沒辦法看到pdb檔的實際內容。唉,殘念!!

 

[2010/4/18] 補上對 pdb 檔的內容的新發現

 

AnferneeHardaway 發表在 痞客邦 留言(0) 人氣()