如何加载Newtonsoft.Json符号

时间:2018-06-20 13:30:21

标签: c# visual-studio visual-studio-debugging

我正在使用Visual Studio 2017,.NET 4.6.2,C#6.0和Newtonsoft.Json 11.0.2。

我尝试加载符号,以便可以逐步执行代码,但是以下两种方法均无效:

  • 我尝试添加“ https://nuget.smbsrc.net”(带有和不带有斜杠)作为符号服务器,但是VS表示在该位置找不到任何符号。
  • 我下载了完整的Newtonsoft.Json代码,构建了解决方案(在不得不卸载Newtonsoft.Json.Tests和Newtonsoft.Json.TestConsole项目之后,因为我无法摆脱错误),并尝试引导VS到... Newtonsoft.Json-master \ Src \ Newtonsoft.Json \ bin \ Debug \ net45中的.pdb文件,但VS也不会接受。

任何人都可以提供分步教程来解释如何集成符号,以便我逐步完成代码吗?

3 个答案:

答案 0 :(得分:1)

我正在使用Newtonsoft 11.0.2,但其他版本也是如此。 手动方法(无源链接)如下:

  1. 转到https://github.com/JamesNK/Newtonsoft.Json/releases。 转到11.0.2资产,然后下载Json110r2.zip文件。 打开包装。

  2. 在要调试的newtonsoft方法上放置一个断点。

  3. 运行程序,停止时进入菜单:调试-> Windows->模块 查找newtonsoft.json.dll。右键单击“加载符号”。

  4. 它将询问您* .pdb文件的位置。 将其指向Json110r2.zip文件中的相应文件(例如,如果您使用的是.net framework app 4.5或更高版本,则为..Json110r2 \ Bin \ net45中的文件)

  5. 现在它将询问您* .cs的位置。使用... \ Json110r2 \ Source \ Src \ Newtonsoft.Json

调试愉快。

也不要忘记转到“工具”->“选项”->“调试”->“常规”,然后勾选“在模块加载时禁止JIT优化(仅受管理)”框。这将有助于使您的调试体验更加明智。已发布的代码如Newtonsoft使用发行版配置进行构建,并进行了优化和调试,这很困难(代码中的非线性跳转,无法检查的变量等)。

答案 1 :(得分:0)

将符号源服务http://srv.symbolsource.org/pdb/Public的路径添加到Visual Studio中调试器符号源的列表中。

来自http://www.symbolsource.org/Public/Home/VisualStudio

  
      
  1. 转到工具->选项->调试器->常规。
  2.   
  3. 取消选中“仅启用我的代码(仅受管理)”。
  4.   
  5. 取消选中“启用.NET Framework源代码步进”。是的,这具有误导性,但是如果您不这样做,则Visual Studio将忽略您的自定义服务器顺序(请参见进一步)。
  6.   
  7. 选中“启用源服务器支持”。
  8.   
  9. 取消选中“要求源文件与原始版本完全匹配”
  10.   
  11. 转到工具->选项->调试器->符号。
  12.   
  13. 为本地符号/源缓存选择一个文件夹。
  14.   
  15. 在“符号文件(.pdb)位置”下添加符号服务器。请注意正确的顺序,因为某些服务器可能包含相同二进制文件的符号:有或没有源。我们建议以下设置:      
  16.   

答案 2 :(得分:0)

在撰写本文时,Newtonsoft.Json的当前稳定版本是11.0.2(https://www.nuget.org/packages/Newtonsoft.Json)。似乎11.0.3将附带SourceLink支持。即无需为此库使用SymbolSource服务。

https://github.com/JamesNK/Newtonsoft.Json/issues/1666 http://blog.ctaggart.com/2018/06/newtonsoftjson-enabling-source-link.html

要在Visual Studio 2017中启用SourceLink: http://blog.ctaggart.com/2017/03/enable-source-link-support-announcing.html