【发布时间】:2011-04-11 08:48:05
【问题描述】:
在我的 C# 应用程序中,我使用堆栈跟踪来捕获方法名称和文件名以防失败。
x86 和 x64 平台之间的堆栈跟踪存在一些差异。
public string ErrorMessage
{
set
{
_strErrorMessage = "Error : " + value;
//Call the method to log error.
LogError(value);
}
}
在上面的代码sn-p中,我在设置ErrorMessage属性的同时,调用了LogError方法,该方法正在捕获堆栈跟踪并将其写入日志文件。
MethodA()
{
Logger obj=new Logger();
obj.ErrorMessage="Failure";
}
在这种情况下,在 x86 平台上,堆栈跟踪包含两个堆栈帧。一个用于 methodA,另一个用于 ErrorMessage 属性的设置器。
在 x64 平台上,堆栈跟踪仅包含一个用于方法 A 的堆栈帧,并且没有用于 ErrorMessage 属性的设置器的堆栈帧。
任何人都可以向我解释在获取堆栈跟踪时优化是如何发生的吗?
【问题讨论】:
-
MethodA在哪里被调用?此代码不完整。
标签: c# .net wpf 64-bit stack-trace