DotPeek如何使用附加到进程调试,没有源代码?

3

我目前正在尝试调试一个服务,但是由于代码量很大,移动不方便,所以没有将代码放在服务器上。

我们目前有一个服务器出现问题,唯一能够调试问题的方法是使用dotpeek反编译.dll文件,并参考@IgalTabachnik的这里

问题在于最后一步,我的断点会出错并提示源代码不可用?这让我困惑...应该可以通过dotpeek获得源代码才对吧?

另一个可能存在的问题是,我正在调试一个定时任务,而且我在启动时无法附加到进程。


你需要使用dotPeek吗?还是你愿意尝试其他可能完成工作的工具? - Paweł Łukasik
我愿意尝试其他可以完成这项工作的工具。@PawełŁukasik - famle
@famle,请在此处提交支持请求:https://dotnettools-support.jetbrains.com/hc/zh-cn/#。 - Alexander Kurakin
1个回答

4
如果您在使用dotPeek +符号服务器时遇到问题,我建议使用 dnSpy。要做到这一点,您需要:
  1. 以管理员身份打开dnSpy(根据目标平台选择dnspy-x86.exe或dnspy.exe)。
  2. 通过文件->打开将包含服务代码的.exe文件加载到dnSpy中
  3. 导航到您想要放置断点的代码位置,并在那里设置它。
  4. 转到调试-附加到进程。由于您以管理员身份运行dnSpy,因此应该在列表中看到您的服务。
  5. 选择并附加到进程
  6. 触发断点。
  7. debug
dnSpy生成自己的源代码,并具有调试功能,因此您可以在其中完成所有操作。它的调试体验类似于Visual Studio,但不如VS丰富。尽管如此,它仍然能够完成其工作。

不确定您的意思是什么?dnSpy不支持4.7.1?它支持的。 - Paweł Łukasik
不好意思,我们的服务器没有安装.NET 4.7.1,所以我无法运行它。能否重新编译为较旧的版本,如4.6? - famle
旧版本使用的是 .net 4/.net 4.6,但不确定是否能在某处找到它。您可以随时获取存储库的旧版本并自行编译。 - Paweł Łukasik
哦,我应该克隆哪个提交呢?@PawelLukasik - famle
此提交 (https://github.com/0xd4d/dnSpy/commit/ccf6cc1046b2583cb45594e87f32b9ad215ea493#diff-a13f510bc9f2f660db5db50117ca7b0d) 转换为 4.7.1 - 因此至少是之前的一个版本。 - Paweł Łukasik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接