<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          BSBacktraceLoggeriOS 輕量級(jí)調(diào)用棧分析器

          聯(lián)合創(chuàng)作 · 2023-10-02 03:00

          BSBacktraceLogger,一款輕量級(jí)調(diào)用棧分析器,用于記錄線程的調(diào)用棧。它只有一個(gè)類,四百行代碼。它支持現(xiàn)有所有模擬器、真機(jī)的 CPU 架構(gòu),可以獲取任意線程的調(diào)用棧,因此可以在檢測(cè)到 runloop 檢測(cè)到卡頓時(shí)獲取卡頓處的代碼執(zhí)行情況。

          示例代碼:

          #import "BSBacktraceLogger.h"
          - (void)viewDidLoad {
              [super viewDidLoad];
              dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
                  BSLOG  // 打印當(dāng)前線程的調(diào)用棧
                  BSLOG_ALL  // 打印所有線程的調(diào)用棧
                  BSLOG_MAIN  // 打印主線程調(diào)用棧
              });
              [self foo];
          }
          - (void)foo {
              [self bar];
          }
          - (void)bar {
              while (true) {
                  ;
              }
          }

          定義了三個(gè)宏用于快速輸出,或者調(diào)用 [BSBacktraceLogger bs_backtraceOfCurrentThread] 等函數(shù)獲取字符串格式的調(diào)用棧。

          樣例

          上述代碼中,BSLOG_MAIN 這個(gè)宏的輸出結(jié)果如下:

          2016-08-27 18:33:20.017 BSBacktraceLogger[25215:862569] Backtrace of Thread 1803:
          KtBacktraceLogger               0x10b831f4c -[ViewController bar] + 12
          KtBacktraceLogger               0x10b831f2b -[ViewController foo] + 43
          KtBacktraceLogger               0x10b831fe0 -[ViewController viewDidLoad] + 128
          UIKit                           0x10c813984 -[UIViewController loadViewIfRequired] + 1198
          UIKit                           0x10c813cd3 -[UIViewController view] + 27
          UIKit                           0x10c6e9fb4 -[UIWindow addRootViewControllerViewIfPossible] + 61
          UIKit                           0x10c6ea69d -[UIWindow _setHidden:forced:] + 282
          UIKit                           0x10c6fc180 -[UIWindow makeKeyAndVisible] + 42
          UIKit                           0x10c670ed9 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4131
          UIKit                           0x10c677568 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1769
          UIKit                           0x10c674714 -[UIApplication workspaceDidEndTransaction:] + 188
          FrontBoardServices              0x10f0e18c8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
          FrontBoardServices              0x10f0e1741 -[FBSSerialQueue _performNext] + 178
          FrontBoardServices              0x10f0e1aca -[FBSSerialQueue _performNextFromRunLoopSource] + 45
          CoreFoundation                  0x10c1e8301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
          CoreFoundation                  0x10c1de22c __CFRunLoopDoSources0 + 556
          CoreFoundation                  0x10c1dd6e3 __CFRunLoopRun + 867
          CoreFoundation                  0x10c1dd0f8 CFRunLoopRunSpecific + 488
          UIKit                           0x10c673f21 -[UIApplication _run] + 402
          UIKit                           0x10c678f09 UIApplicationMain + 171
          KtBacktraceLogger               0x10b8338ff main + 111
          libdyld.dylib                   0x10ea9c92d start + 1

          說(shuō)明

          Xcode 的調(diào)試輸出不穩(wěn)定,有時(shí)候存在調(diào)用 NSLog() 但沒(méi)有輸出結(jié)果的情況,建議前往 控制臺(tái) 中根據(jù)設(shè)備的 UUID 查看完整輸出。

          真機(jī)調(diào)試和使用 Release 模式時(shí),為了優(yōu)化,某些符號(hào)表并不在內(nèi)存中,而是存儲(chǔ)在磁盤上的 dSYM 文件中,無(wú)法在運(yùn)行時(shí)解析,因此符號(hào)名稱顯示為 。

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九九精品在线观看 | 久久十八禁| 九色九一视频 | 91天天干| 天天拍天天干天天射 |