【发布时间】:2010-12-29 19:24:42
【问题描述】:
由于我无法访问我正在使用的库的完整源代码,但我有 pdb 文件,是否可以在“调试源代码”中设置断点?
如果是这样,我该怎么做?
【问题讨论】:
标签: visual-studio debugging breakpoints symbols pdb-files
由于我无法访问我正在使用的库的完整源代码,但我有 pdb 文件,是否可以在“调试源代码”中设置断点?
如果是这样,我该怎么做?
【问题讨论】:
标签: visual-studio debugging breakpoints symbols pdb-files
是的,这是可能的,您不需要源代码。 调试 > 新断点 > 在函数处中断。将位置设置为函数的名称。例如:“Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly”。关闭“使用 Intellisense”复选框,您将没有任何复选框。如果您不知道它是用什么写的,语言是一种猜测,如果您不确定,请选择“未知”。
您需要密切关注 Debug + Windows + Breakpoints 窗口,以验证调试器是否可以解析断点。在程序集被加载并且方法被 JIT 编译之前,它将无法实现。
这当然不是最好的调试体验。一旦断点命中,除了 JIT 编译器生成的机器代码外,您什么也看不到。以及调用堆栈窗口,顺便说一句,您查看方法名称的终极资源。
【讨论】:
System.DateTime.IsLeapYear()?试过这个,但它没有打破。我在“工具”>“调试”>“符号”中定义了“Microsoft 符号服务器”,但“断点”窗口显示“未找到符号”。
Microsoft.AspNetCore.Authentication.Certificate.dll!Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationHandler.HandleAuthenticateAsync()。您可以从调用堆栈中复制整个字符串。