【发布时间】:2013-09-21 08:44:24
【问题描述】:
我正在尝试调试发布 Web 服务的 Azure 应用程序,Visual Studio 2012 拒绝显示源代码,即使已加载 PDB。这是我的设置:
在调试 > 选项和设置... > 调试 > 常规:
- [ ] 仅启用我的代码
- [ ] 启用 .NET Framework 源代码步进
- [x] 启用源服务器支持
- [ ] 要求源文件与原始版本完全匹配
在调试 > 选项和设置... > 调试 > 符号:
- [x] _NT_SYMBOL_PATH
- [ ] Microsoft 符号服务器
- [x] c:\path\to\my\PDBs
- [x]http://referencesource.microsoft.com/symbols
解决方案属性> 调试源文件:
- c:\path\to\my\CSfiles\
- c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\
- 等
重现步骤:
- 将 Azure 应用程序部署到 Development Fabric(计算模拟器)。
- 以管理员身份打开 VS2012。
- 附加到 WaWorkerHost.exe,等待符号加载并验证 MyModule.dll 是否已加载符号。
- [可选] 选择解决方案属性...> 调试源文件并添加 c:\path\to\my\CSfiles\ 作为第一个条目。
- 选择 DEBUG > New Breakpoint > Break At Function...
- 函数:MyClass.MyMethod。语言:C#。
- VS2012 抱怨找不到,但它添加了断点。
- 使断点命中。
- 点击后,双击“调用堆栈”的第一项。它是 MyClass.MyMethod,由 System.ServiceModel.dll 中的一个类调用。
- VS2012 显示“无可用源”,只有“显示反汇编”选项(下图):
在调用堆栈窗口,如果我右键单击当前方法(被断点击中),然后选择符号加载信息...,最后一行显示:
c:\path\to\my\PDBs\MyModule.pdb: Symbols loaded.
如果我打开 DEBUG > Windows > Modules,我的模块显示正确:
- 路径正确。
- 优化 = 否。
- 用户代码 = N/A(与其他所有内容一样)。
- 符号状态 = 已加载符号。
- 符号文件 = c:\path\to\my\PDBs\MyModule.pdb(没错)。
是的,应用程序是使用完整的调试信息构建的。我已经使用this tool 转储了 PDB,它在正确的位置显示了我的源代码。
有趣的是,我可以看到所有来自 .NET Framework 的源代码。我只是看不到自己的来源,这真是令人沮丧。
我已经从 user-dir\Documents\Visual Studio 2012\Projects 中删除了任何 .suo 文件,但没有帮助。我想这无济于事,因为我总是附加到一个可执行文件,它会自动创建一个新的解决方案。
【问题讨论】:
标签: c# visual-studio visual-studio-2012 visual-studio-debugging pdb-files