我正在使用Visual Studio 2017,.NET 4.6.2,C#6.0和Newtonsoft.Json 11.0.2。
我尝试加载符号,以便可以逐步执行代码,但是以下两种方法均无效:
任何人都可以提供分步教程来解释如何集成符号,以便我逐步完成代码吗?
答案 0 :(得分:1)
我正在使用Newtonsoft 11.0.2,但其他版本也是如此。 手动方法(无源链接)如下:
转到https://github.com/JamesNK/Newtonsoft.Json/releases。 转到11.0.2资产,然后下载Json110r2.zip文件。 打开包装。
在要调试的newtonsoft方法上放置一个断点。
运行程序,停止时进入菜单:调试-> Windows->模块 查找newtonsoft.json.dll。右键单击“加载符号”。
它将询问您* .pdb文件的位置。 将其指向Json110r2.zip文件中的相应文件(例如,如果您使用的是.net framework app 4.5或更高版本,则为..Json110r2 \ Bin \ net45中的文件)
现在它将询问您* .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:
- 转到工具->选项->调试器->常规。
- 取消选中“仅启用我的代码(仅受管理)”。
- 取消选中“启用.NET Framework源代码步进”。是的,这具有误导性,但是如果您不这样做,则Visual Studio将忽略您的自定义服务器顺序(请参见进一步)。
- 选中“启用源服务器支持”。
- 取消选中“要求源文件与原始版本完全匹配”
- 转到工具->选项->调试器->符号。
- 为本地符号/源缓存选择一个文件夹。
- 在“符号文件(.pdb)位置”下添加符号服务器。请注意正确的顺序,因为某些服务器可能包含相同二进制文件的符号:有或没有源。我们建议以下设置:
- http://referencesource.microsoft.com/symbols
- http://srv.symbolsource.org/pdb/Public或经过身份验证的变体 (请参见上文)
- http://srv.symbolsource.org/pdb/MyGet或经过身份验证的变体(请参见上文)
- (其他带有源代码的符号服务器)
- http://msdl.microsoft.com/download/symbols *(其他没有源的符号服务器)
答案 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