2

我的朋友做了一個非常有用的班級圖書館,我一直在使用。我通常使用反射器到請參閱他的代碼做什麼。我可以使用pdb文件來遍歷第三方程序集嗎?

我真正想要做的是步驟通過他的代碼,而我正在調試。所以他給了我他的.pdb文件。

  • Foo.dll(發佈配置,編譯)
  • Foo.pdb

現在,我不知道我怎樣才能得到它的自動闖入他的代碼時,它拋出一個異常(他的代碼,在各個點,thorws異常..像A first chance exception of type 'System.Web.HttpException' occurred in Foo.dll ...

我可以這樣做嗎?我需要在Visual Studio中設置符號服務器設置的東西嗎?我是否需要將dll編譯成調試配置,並傳遞.dll和.pdb文件?或者(我很好lly害怕這一個)..我需要同時具有.dll,.pdb和他的源代碼...

我也有一個look at this previous SO question,但它sorta沒有幫助(但證明我已經在提出問題之前嘗試搜索)。

有人可以幫我嗎?

回答

2

是的,如果你的朋友對這些PDB進行索引,以便調試器知道在源代碼管理系統中何處找到合適的源代碼,並且如果你的朋友將這些pdb上傳到符號服務器,那麼你可以完美地通過代碼進行調試。

我已經爲一些項目在工作中完成了這項工作,而且這種工作就像一個魅力。有關設置符號服務器

更多信息:

Source server helps you kill bugs

Setting up a symbol server

Using symstore

+0

如果參考項目不是第三方,但我需要設置符號服務器,但我自己的項目是我有它的源代碼,但在我想調試的另一個項目中添加了dll – dakait 2013-03-11 06:35:20

+0

不,如果您已經構建該機器上引用的項目,以及是否有pdb文件。只需將引用的dll旁邊的pdb文件複製一下,就可以了。 – 2013-03-11 11:19:04

+0

tnx的回覆:) – dakait 2013-03-11 11:24:56

0

我想你發佈了另一個問題的鏈接,只是爲了證明你已經搜索過,因爲這個問題確實有你的問題的答案。

1

答案是在鏈接的問題,雖然也許它不是令人眼花繚亂的明顯,所以我會說:是的,你需要有源代碼才能遍歷源代碼。 PDB文件只告訴調試器什麼源文件與特定的機器指令相對應。

您不需要設置「符號服務器」或類似的東西。請讓他把信息發送給你。當您加載PDB文件時,如果源文件不在相同路徑中,Visual Studio將提示輸入源文件的位置。

+0

沒錯,但是如果這個人經常修改他的源代碼,那麼他每次給topicstarter一個新版本的DLL時都必須發送該源代碼。 而且,如果topicstarter在不同的項目中使用該DLL的不同版本,那麼使用正確的源代碼進行調試可能成爲一個相當大的挑戰... – 2010-04-29 08:20:54

+0

那麼,如果我需要源代碼,那麼PDB有什麼用途呢?我的意思是,爲什麼他不給我來源,我編譯它然後引用它?我只是不明白:(:(順便說一句,我不希望他的消息來源雖然..希望pdb將它在那裏) – 2010-04-29 14:58:40

+0

PDB的「點」正是我所說的。即使你編譯你自己必須讓編譯器生成PDB文件 - 這就是調試器的工作方式。更重要的是,你的情況的好處是他不一定需要向你發送*所有你需要的源代碼來編譯程序集,只是你想要的源代碼文件 – EMP 2010-04-29 23:15:52

相關問題