【问题标题】:Objective-C How to get the line number where exception was thrownObjective-C 如何获取抛出异常的行号
【发布时间】:2012-11-15 08:59:56
【问题描述】:

我在 try-catch 结构中使用它来了解在哪个 抛出异常的方法:

NSLog(@"%@", NSStringFromSelector(_cmd));

我想知道 Xcode 4 中是否也有办法获取发生错误的行号。

有什么提示吗?

【问题讨论】:

    标签: objective-c exception line


    【解决方案1】:

    有一个__LINE__ 宏可能对您有用,请参阅此previous question 以获得灵感。

    【讨论】:

      【解决方案2】:

      @catch 子句中试试这个:

      NSLog(@"Stacktrace: %@", [NSThread callStackSymbols]);
      

      在开发过程中,您可以在objc_exception_throw 上设置符号断点,并在 Xcode 调试器中查看错误发生的位置。

      【讨论】:

      • …或use an exception breakpoint 这样您就不必记住名称objc_exception_throw
      • @robmayoff 取决于是否要在抛出异常之前或之后调用调试器。
      • 默认情况下,异常断点在 throw 时中断(在这种情况下,它会为您在 objc_exception_throw 上设置断点),但您可以将其更改为在 catch 时中断(在这种情况下,它会设置异常在__cxa_begin_catch)。也许我不明白你在说什么。
      • @robmayoff 这很有趣,而且每次我想捕获异常时都不必查找objc_exception_throw :)
      【解决方案3】:

      您可以在 Xcode 左侧的 Break Point Navigator 菜单中添加一个异常断点,这将在异常发生时停止您的位置

      【讨论】:

      • 是的,我知道这一点。但我正在考虑一个日志文件,我可以在其中看到错误发生的时间。不仅仅用于开发期间的调试。
      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 2010-12-08
      • 2017-11-29
      • 2011-05-20
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多