2017-03-17 22 views
1

我有以下类。如何获得空参考分析结果到日志文件中

class Tim 
{ 
    public Tim() 
    { 

    } 

    public Tom GetTom() 
    { 
     return new Tom(); 
    } 

} 

class Tom 
{ 
    public Tom() 
    { 

    } 

    public Jim GetJim() 
    { 
     return new Jim(); 
    } 
} 

class Jim 
{ 
    public Jim() 
    { 

    } 

    public Jom GetJom() 
    { 
     return null; 
    } 
} 

class Jom 
{ 
    public Jom() 
    { 

    } 

    public string GetMagicString() 
    { 
     return "Hello World"; 
    } 
} 

它的用法如下。

class Program 
{ 
    static void Main(string[] args) 
    { 
      new Tim().GetTom().GetJim().GetJom().GetMagicString(); 
    } 
} 

当我运行它,一个空引用异常被抛出如下新的空引用分析在新的异常助手精美结果表明。

enter image description here

这是伟大的,因为它清楚地表明我这方法调用这个链条负责例外。但是,如果这段代码在字段中运行,我还想在日志文件中记录此错误。为此,当我在捕获块中捕获NullReferenceException时,我没有收到有关返回null的方法的信息。这是否仅在VS异常助手对话框中可用,并且此时不能记录?

回答

3

这是仅在VS异常帮助对话框中可用的东西,并且此时不能记录?

是的,这是只在Visual Studio的例外帮助器中可用的东西,不能在此刻记录。

这不是不可能的,但是您必须使用与Visual Studio调试器相同的功能来测试代码。在一个正常的,未检测到的情况下,没有空引用实际来源的记录,因此您的登录输出无法提供该信息。

+0

您可以详细说明与Visual Studio调试器功能相当的仪器代码吗?我的意思是如何做到这一点,并链接到任何示例/样本。 –

+0

@ jimcrown:对不起,我不能详细说明。这将是一个令人难以置信的广泛问题,不仅仅是编写一个全新的调试器,而且还增加了这个高级功能(我不知道VS团队如何实现它......最有可能的是他们利用了现有的IntelliTrace功能,或者他们现在做一些实际的代码检查/反编译追溯以查找空引用的来源)。 –