【问题标题】:How to print backtrace of main thread while in other thread?如何在其他线程中打印主线程的回溯?
【发布时间】:2016-09-22 21:22:38
【问题描述】:

在其他线程中如何打印主线程的回溯?

在其他线程中,我想打印主线程的回溯。有什么简单的代码给我吗?

【问题讨论】:

  • 看看KSCrash。
  • @Avi 我不想导入第三个框架,有没有简单的代码
  • 你为什么不看一下项目并注意,1)源是可用的,2)它有示例代码。如果您希望有人为您编写代码,请直接说出来,我们现在就可以结束这个问题了。
  • @Avi 是的,你说得对,以后我会去看看KSCrash,因为我的申请今晚是截止日期,我没时间看项目源代码。
  • @Avi 我确实浏览了 KSCrash 存储库和执行此操作的代码,它实际上并没有给出主线程的堆栈跟踪,这是 OP 唯一要求的。把这个留在这里,这样其他人就不会掉进那个兔子洞了

标签: ios objective-c backtrace


【解决方案1】:

执行以下操作:

dispatch_async(dispatch_get_main_queue(), ^{
   NSLog(@"Trace = %@", [NSThread callStackSymbols]);
});

【讨论】:

  • 认为 OP 想要在主线程中打印当前指令指针的堆栈跟踪。但是,我想不出他为什么要这样做。
  • @trojanfoe 是的,我想做一个可以知道主线程被阻塞的工具,并打印主线程的调用堆栈。如果通过 dispatch_async 执行,堆栈是“[NSThread callStackSymbols]”,这不是我想要的
  • @SubCycle 你不会明白的。
【解决方案2】:

查看此代码:BSBacktraceLogger

+ (NSString *)bs_backtraceOfCurrentThread {
    return [self bs_backtraceOfNSThread:[NSThread currentThread]];
}

+ (NSString *)bs_backtraceOfMainThread {
    return [self bs_backtraceOfNSThread:[NSThread mainThread]];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2021-05-18
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多