How to: Debug .NET Framework source
如何設置Visual Studio開發工具調試NET源代碼:
如何關聯所需要調試的pdb文件路徑:
一定要從Nuget上面下載帶有pdb文件的版本引用到你的項目里,這個只能是你下載之后,去本地磁盤目錄找有沒有了,有的版本真的就是就沒有pdb文件,所以只能使用不能調試。
比如:這個的 System.IdentityModel.Tokens.Jwt ,如果是5.6.0版本就沒有對應的pdb文件,只能用5.4.0這個版本進行調試。十分不爽
5.6.0版本的是真沒有pdb,5.4.0這個版本才有pdb
開發工具里需要找到"模塊"的窗口,在"調試"菜單里的子菜單項里找到"模塊"菜單項。
要調試的代碼所在的dll文件,可以通過搜索的方式查看某一個dll是否已經是被已加載符號的狀態,如果沒有,可以通過右鍵菜單完成。
選中你要加載的dll文件,右鍵菜單里關聯對應的pdb文件。
符號狀態:變成已加載符號的狀態就可以調試源代碼了。
net的源碼調試比java的復雜多了,這是因為net程序編譯之后生成的dll文件里沒有調試信息,調試信息放在pdb文件里,在調試源碼的時候必須要先有對應的符號信息才可以。
如果你使用JetBrains Rider這個NET開發工具那就可以直接調試源代碼啥也不用設置,吃不吃驚,牛不牛逼。誰是宇宙第一IDE,現在是不是一目了然了。(我平時主要用它調試和查看源代碼)
后面又新知道的反編譯和調試可以在一起的工具: dnSpy (也很牛逼,但是我沒用)
總結:
想學好net比學好java門檻高多了,所以這也是為什么大家都愛用java的一個主要原因之一。
不要覺得這個門檻無所謂,好比平時我們工作中也基本用不到調試源代碼,但是如果你想做好一個大項目,那么學習源碼,調試源碼就是一個必經之路,而微軟在這個地方給你設置了一個非常高的門檻,對比這個門檻在java那里根本沒有,沒有對比就沒有傷害。
java查看源碼和調試源碼是非常簡單容易的,基本不用進行任何附加設置,就能直接調試項目里引用別人寫的jar。
我現在正好項目用到JWT,我需要一個更安全的JWT,不想在別人拿到access token之后,訪問這個jwt.io網站里看到我給他的信息,因此我需要調試源代碼,看看到底這個JWT是如何生成,如何驗證的,我學習之后,會重新修改或者重新定義一個我自己認為更安全的JWT數據給我的下游客戶。而目前市面上我能找到的關於OAuth2.0的NET CORE的例子里,基本上都是最簡單的使用方法不夠實用。就我目前的水平還沒有達到熟練掌握OAuth2.0這個開發技術,所以只能自定義實現我認為更安全的JWT給下游客戶了。
- 被暴露的JWT信息(不安全)
- 不被暴露的JWT信息:(加密之后給客戶端,服務器端能加密能解密的JWT才是更安全的使用方式。)
就憑這一個騷操作,又可以秒了網上很多介紹JWT的文章了,既實用又安全的騷操作!