首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dotpeek,已加载符号,但“源不可用”。怎么回事?

Dotpeek,已加载符号,但“源不可用”。怎么回事?
EN

Stack Overflow用户
提问于 2020-06-19 03:10:42
回答 2查看 217关注 0票数 3

我是Dotpeek的新手。也许我遗漏了一些东西,但似乎一切都井然有序:

加载我想要的模块:

在Dotpeek中一切看起来都很好:

我设置了断点:

然而,当我在反编译的pdb中的断点上着陆时,我仍然收到以下消息:

我能想到的唯一原因是,这是微软的专有软件,他们肯定有办法阻止人们这么做。真的是这样吗?如果没有,我怎样才能让它工作呢?

我已经搜索并找到了类似的帖子,但由于某种原因,解决方案在这里不起作用……

EN

回答 2

Stack Overflow用户

发布于 2020-06-27 01:25:41

从编译后的代码(DLL)创建源代码是dotPeek的一个特性。Visual Studio没有该功能。

一些工具可以集成到Visual Studio中(例如Red Gate Reflector,一个商业工具),但是AFAIK,dotPeek直到现在才集成到VS中。

所以,你不能在Visual Studio中看到任意DLL的源代码。

我们通常不推荐在这里使用软件,但也许dnSpy具有您想要的功能:调试和反编译功能。

票数 0
EN

Stack Overflow用户

发布于 2021-03-30 07:13:48

根据the docs,您可能错过了这一步:

确保“在Visual Studio选项中,转到调试|常规页并清除启用仅我的代码复选框。

通过反复试验,我发现,即使所有设置都正确,使用"New > Function Breakpoint“手动创建断点并不总是有效的。断点在预期的时候触发,但我得到的结果是"Source Not Available“。

解决方法

我的解决方法是找到一种方法来单步执行到我需要的位置,然后正常设置断点(单击gutter或F9)。有时我可以从我自己的代码中做到这一点,有时我必须在库中找到另一个手动断点有效的方法。

很容易判断手动断点是否会工作,甚至不需要点击它:通过附加调试器,在使用"New“>”Function Breakpoint“创建断点后,如果"Language”和"File“是正确的,它就会工作。或者,当双击断点时,如果它将您带到文件,它将工作。

详细信息

下面是我的断点的比较,一个是通过单步执行设置的,另一个是手动设置的。手动设置的一个显示无文件,命中时显示"Source Not Available":

当我将这些断点导出到XML时,我注意到了以下差异:

有效的断点(单步执行,然后设置):

代码语言:javascript
复制
      <LocationType>SourceLocation</LocationType>
      ...
        <FileName>C:\Users\MyUser\AppData\Local\JetBrains\Shared\vAny\DecompilerCache\decompiler\7391115F-C184-4D01-A933-DF771669B14D\0f\2317d014\HttpCacheAttribute.cs</FileName>
      ...
      <BreakpointType>PendingBreakpoint</BreakpointType>

无法工作的断点(手动创建):

代码语言:javascript
复制
      <LocationType>NamedLocation</LocationType>
      ...
      <BreakpointType>BoundBreakpoint</BreakpointType>
      ...
      <ModuleName>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\e1238e8c\6a0ff27b\assembly\dl3\a01be3d2\00ba5bf4_8fe7d601\CacheCow.Server.WebApi.dll</ModuleName>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62457648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档