如何找到导致C#代码错误的确切行?

时间:2013-10-24 06:44:12

标签: c# visual-studio exception exception-handling

我正在修改的visual studio 2008(实际上称为BIDS)中执行c#脚本(在SSIS内部,一个ETL工具)。我收到错误,但错误消息不允许我跟踪导致错误的行。如何找出导致问题的线路。

我尝试使用,尝试catch并且我的SSIS包运行没有错误。但是,当我删除try catch时,包执行显示错误。无论如何,所有关于SSIS的讨论都不是真的需要。它的错误/异常捕获在这里很重要。

    try
    {            
        //my code here
    }

    catch (Exception e)
    {
        Console.WriteLine("{0} Exception caught.", e);
    }

错误信息如下 -

Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at ST_LongCodeNameHere.csproj.ScriptMain.Main()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

2 个答案:

答案 0 :(得分:2)

在Technet上查看“Coding and Debugging the Script Component”页面。

特别是,“调试脚本组件”部分可能会给你一些指示:

  

脚本组件不支持使用断点。   因此,您无法单步执行代码并检查值   包运行。您可以通过监视脚本组件的执行情况   使用以下方法:

     
      
  • 使用System.Windows.Forms命名空间中的MessageBox.Show方法中断执行并显示模式消息。 (去掉   完成调试过程后,此代码。)
  •   
  • 提升信息性消息,警告和错误的事件。 FireInformation,FireWarning和FireError方法显示事件   Visual Studio输出窗口中的说明。但是,中   FireProgress方法,Console.Write方法和Console.WriteLine
      方法不会在“输出”窗口中显示任何信息。消息
      来自FireProgress事件出现在SSIS的进度选项卡上   设计师。有关更多信息,请参阅在脚本中提升事件
      组件。
  •   
  • 将事件或用户定义的消息记录到已启用的日志记录提供程序。有关更多信息,请参阅登录脚本组件。
  •   
     

如果您只想检查脚本组件的输出   配置为源或转换,而不保存数据   到目的地,您可以使用行计数停止数据流   转换并将数据查看器附加到脚本的输出   零件。有关数据查看器的信息,请参阅调试数据   流动。

答案 1 :(得分:1)

Find the image

选中所有框并尝试运行代码。