tom*_*ing 5 c# exception-handling xamarin.ios
我正在尝试为我的MonoTouch代码实现一个有用的通用异常处理程序.
如果我附加一个处理程序AppDomain.CurrentDomain.UnhandledException,则根本没有堆栈跟踪,即.StackTrace属性为null或为空.
如果我将我的UIApplication.Main(args)调用包装起来try {} catch {},则堆栈跟踪不包含任何有用的信息:
at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00000] in <filename unknown>:0
at MonoTouch.UIKit.UIApplication.Main (System.String[] args) [0x00000] in <filename unknown>:0
at MyNamespace.MyProduct.MyProject.Application.Main (System.String[] args) [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)
即它没有比我捕获异常的Main()方法更深入.
任何想法我怎么能在堆栈跟踪中获得更多有用的信息,还是完全通过AOT编译完全优化?(堆栈跟踪在调试模式下是预期的.)
小智 1
您将无法获取发布代码中的行号或文件名。该信息已被删除。但是,您仍然应该能够在代码中获取完整的堆栈跟踪,以至少查看类/调用层次结构。
我猜您一定在事后调查这一点,因为您无法调试或捕获发布版本上的运行异常。我倾向于做的是将异常记录到日志文件中以便稍后检查。
该过程从以下代码开始:
StackTrace trace = new StackTrace(true);
foreach(StackFrame frame in trace.GetFrames())
... log data to log file
Run Code Online (Sandbox Code Playgroud)
您还可以创建带有异常的 StackTrace 对象。我会开始在那里玩耍。请记住,在许多情况下,如果错误发生在 iOS 部分的深处,您将无法获得堆栈跟踪,因为 Mono 不会暴露于该数据。仅发生到主方法的异常或崩溃通常表明存在较低级别的问题。
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |