2017-08-30 17 views
0

我刚刚在学习Azure数据湖分析和U-SQL。我有一个简单的脚本运行并生成预期的输出。然而,当我在代码后面的助手方法中设置一个断点时,它不会被打中,因为没有符号被加载。我已经看过所有可用的微软教程,并且没有提示我必须做任何事情来启用调试,它应该在我运行时工作。断点后面的U-SQL代码未命中

  • 我在本地运行。
  • 我正在使用F5在调试模式下运行。
  • 脚本成功完成。
  • 输出确认helper方法执行

U型SQL

@searchlog = 
EXTRACT UserId   int, 
     Start   DateTime, 
     Region   string, 
     Query   string, 
     Duration  int, 
     Urls   string, 
     ClickedUrls  string 
FROM "/SearchLog.tsv" 
USING Extractors.Tsv(); 

@searchlog = SELECT 
      UserId, 
      DataLake.Helper.Test() AS Test, 
      Start, 
      Region, 
      Query, 
      Duration, 
      Urls, 
      ClickedUrls 
    FROM @searchlog; 


OUTPUT @searchlog 
TO "/SearchLog_output.tsv" 
USING Outputters.Tsv(); 

代码隐藏

namespace DataLake 
{ 
public class Helper 
{ 
    public static string Test() 
    { 
     Console.WriteLine("Stop"); 
     return "Test"; 
    } 
} 
} 

输出窗口

'DebugHost.exe' (CLR v4.0.30319: DefaultDomain): Loaded. 
'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561 
934e089\mscorlib.dll'. Symbols loaded. 
'DebugHost.exe' (CLR v4.0.30319: DefaultDomain): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\DebugHost.exe'. 
Symbols loaded. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\Microsoft.Cosmos 
.ScopeStudio.BusinessObjects.Debugger.dll'. Cannot find or open the PDB 
file. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\Microsoft.Cosmos 
.ScopeStudio.BusinessObjects.Common.dll'. Cannot find or open the PDB file. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\Microsoft.Analytics 
.LocalRun.dll'. Cannot find or open the PDB file. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c56 
1934e089\System.dll'. Symbols loaded. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\Microsoft.Cosmos. 
ClientTools.Shared.dll'. Cannot find or open the PDB file. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__ 
b77a5c561934e089\System.Core.dll'. Symbols loaded. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b 
77a5c561934e089\System.Xml.dll'. Symbols loaded. 
'DebugHost.exe' (CLR v4.0.30319: DebugHost.exe): Loaded 
'C:\Users\ksmith\Documents\Visual Studio 
2017\Projects\USQLApplication1\DataLake\bin\LocalDebug\ScopeRuntime.exe'. 
Cannot find or open the PDB file. 
The program '[28036] DebugHost.exe' has exited with code 0 (0x0). 

任何人都可以摆脱关于为什么断点不被击中的一些信息?

Adding Debugger.Launch();导致“选择即时调试器”窗口出现。如果我选择其中一个选项,那么我会得到一个视觉工作室的实例,其中断点背后的代码被击中。该VS实例称为LocalVertexHost

JIT Debugger

感谢

+0

你应该能够做你所描述的。你怎么知道没有符号加载?如果您分享您正在使用的VS版本和ADL插件,这将有所帮助。如果您与工具团队私密分享这些脚本和VS项目,我们可以查看脚本和VS项目:bigdatatools(at)Microsoft dot com。 – OmidA

+0

您可以请建立干净,然后F5,然后检查是否有$(ProjectDirectory)\ bin \ debug \ XXXXX \ _ScriptFileName_YYYY \ __ codebehind_zzzz.dll和.pdb?这是程序集动态生成的dll和pdb。确认这些都存在后,您可以在调试器中暂停以查看dll是否已加载到“模块”中,并尝试从那里加载该pdb文件以查看该符号是否可以加载。 –

+0

我曾尝试使用VS 2015 - ADL 2.2.2100.0和VS 2017 - ADL 2.2.9000.1。 dll和pdb文件后面的代码在LocalDebug文件夹中创建,但它不出现在模块窗口中 – ksmith

回答

-1

转到在Visual Studio调试选项,并确保符合以下条件:

  • 取消选中 “启用仅我的代码”
  • 检查“在模块负载上抑制JIT优化”
+0

不幸的是没有效果。 – ksmith