【西天取经】第一招:如何调试NET CORE的源代码(微软、第三方)

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的文章了,既实用又安全的骚操作!

原文地址:https://www.cnblogs.com/xitianqujing/p/12725968.html