在我的C#应用程序中,我使用堆栈跟踪来捕获方法名称和文件名以防止失败。
x86和x64平台之间的堆栈跟踪存在一些差异。
public string ErrorMessage
{
set
{
_strErrorMessage = "Error : " + value;
//Call the method to log error.
LogError(value);
}
}
在上面的代码片段中,设置ErrorMessage属性时,我调用了LogError方法,该方法捕获堆栈跟踪并将其写入日志文件。
MethodA()
{
Logger obj=new Logger();
obj.ErrorMessage="Failure";
}
在x86平台上,堆栈跟踪包含两个堆栈帧。一个是methodA方法的堆栈帧,另一个是ErrorMessage属性的setter方法的堆栈帧。
在x64平台上,堆栈跟踪只包含methodA方法的一个堆栈帧,没有ErrorMessage属性的setter方法的堆栈帧。
有人能向我解释一下在获取堆栈跟踪时优化是如何发生的吗?
MethodA
在哪里被调用了?这段代码不完整。 - Cody Gray