• lldb 调试常用命令


    lldb 调试常用命令

    设置目标程序

    通过程序名调试

    lldb /Applications/demo-app-ob-storyboard.app
    (lldb) target create "/Applications/demo-app-ob-storyboard.app"
    Current executable set to '/Applications/demo-app-ob-storyboard.app' (x86_64).
    (lldb)
    

    进入lldb之后设置程序名

    ➜  ~ lldb
    (lldb) file /Applications/demo-app-ob-storyboard.app
    Current executable set to '/Applications/demo-app-ob-storyboard.app' (x86_64).
    (lldb)
    

    调试可执行文件

    ➜  demo-app-hook git:(dark-mode) ✗ lldb -w Products/demo_app_hook.framework/demo_app_hook
    (lldb) target create "Products/demo_app_hook.framework/demo_app_hook"
    Current executable set to 'Products/demo_app_hook.framework/demo_app_hook' (x86_64).
    (lldb)
    

    断点

    设置断点

    设置入口

    (lldb) b -[NSObject init]
    Breakpoint 1: where = libobjc.A.dylib`-[NSObject init], address = 0x000000000000a3a8
    

    给某个方法下断点

    (lldb) breakpoint set --method Append
    Breakpoint 4: 55 locations.
    (lldb)
    

    指定类的某个方法

    (lldb) breakpoint set -n "-[AppendText Append:]"
    Breakpoint 6: where = demo-app-ob-storyboard`-[AppendText Append:] + 7 at AppendText.m:13:12, address = 0x0000000100001ac5
    (lldb)
    

    简写

    br s -n "-[AppendText Append:]"
    

    查看断点

    (lldb) breakpoint list
    Current breakpoints:
    1: name = '-[NSObject init]', locations = 1
      1.1: where = libobjc.A.dylib`-[NSObject init], address = libobjc.A.dylib[0x000000000000a3a8], unresolved, hit count = 0
    
    2: name = 'delete', locations = 1
      2.1: where = CoreData`-[NSPersistentHistoryChangeRequestToken delete], address = CoreData[0x00000000002fcbd0], unresolved, hit count = 0
    
    (lldb)
    

    删除断点

    (lldb) breakpoint delete
    About to delete all breakpoints, do you want to do that?: [Y/n] y
    All breakpoints removed. (2 breakpoints)
    (lldb)
    

    启动程序

    process launch

    run

    r

    调试命令

    这里和idea命令做对比

    • 跳过断点(F9)
      • thread continue
    • 步入(F7)
      • thread step-in
    • 步出(F8)
      • thread stop-out
    • 继续执行
      • c
    • 查看变量
      • p 变量名
      • print 变量名
    • 修改方法返回值
      • thread return <value>
    • 查看线程列表
      • thread list
        lldb) thread list
       Process 45369 stopped
     thread #1: tid = 0x17b21f, 0x0000000100001ac5 demo-app-ob-storyboard`-[AppendText Append:](self=0x00000001002d9850, _cmd="Append:", name=@"sadf") at AppendText.m:13:12, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
      thread #9: tid = 0x17b26c, 0x00007fff679dc25a libsystem_kernel.dylib`mach_msg_trap + 10, name = 'com.apple.NSEventThread'
      thread #13: tid = 0x17bdf6, 0x00007fff679dd92e libsystem_kernel.dylib`__workq_kernreturn + 10
      thread #14: tid = 0x17c121, 0x00007fff679dd92e libsystem_kernel.dylib`__workq_kernreturn + 10
      thread #15: tid = 0x17c163, 0x00007fff679dd92e libsystem_kernel.dylib`__workq_kernreturn + 10
      thread #16: tid = 0x17c164, 0x00007fff679dd92e libsystem_kernel.dylib`__workq_kernreturn + 10
    
    • 查看调用栈
      • thread backtrace
        (lldb) thread backtrace
        thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
       frame #0: 0x0000000100001ac5 demo-app-ob-storyboard`-[AppendText Append:](self=0x00000001002d9850, _cmd="Append:", name=@"sadf") at AppendText.m:13:12 [opt]
        frame #1: 0x000000010000195b demo-app-ob-storyboard`-[DetailController viewDidLoad](self=0x00000001002dc200, _cmd=<unavailable>) at DetailController.m:20:35 [opt]
        frame #2: 0x00007fff2d43817d AppKit`-[NSViewController _sendViewDidLoad] + 87
        frame #3: 0x00007fff2d492d0e AppKit`_noteLoadCompletionForObject + 643
        frame #4: 0x00007fff2d3994ad AppKit`-[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1930
        frame #5: 0x00007fff2d41f93a AppKit`-[NSNib _instantiateNibWithExternalNameTable:options:] + 647
        frame #6: 0x00007fff2d41f5be AppKit`-[NSNib _instantiateWithOwner:options:topLevelObjects:] + 143
        frame #7: 0x00007fff2d41e92f AppKit`-[NSViewController loadView] + 345
        frame #8: 0x00007fff2d41e676 AppKit`-[NSViewController _loadViewIfRequired] + 72
        frame #9: 0x00007fff2d41e5f3 AppKit`-[NSViewController view] + 23
        frame #10: 0x00007fff2d6a29bf AppKit`+[NSWindow windowWithContentViewController:] + 41
        ......
    
    (lldb) run
    Process 45369 launched: '/Applications/demo-app-ob-storyboard.app/Contents/MacOS/demo-app-ob-storyboard' (x86_64)
    2020-06-02 11:45:28.635549+0800 demo-app-ob-storyboard[45369:1552927] -------------hook method -------------
    2020-06-02 11:45:28.914460+0800 demo-app-ob-storyboard[45369:1552927] [Nib Loading] Failed to connect (nameTest) outlet from (ViewController) to (NSTextFieldCell): missing setter or instance variable
    demo-app-ob-storyboard was compiled with optimization - stepping may behave oddly; variables may not be available.
    Process 45369 stopped
    * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
        frame #0: 0x0000000100001ac5 demo-app-ob-storyboard`-[AppendText Append:](self=0x0000000100300be0, _cmd="Append:", name=@"sadf") at AppendText.m:13:12 [opt]
       10
       11  	@implementation AppendText
       12  	- (NSString *)Append:(NSString *)name {
    -> 13  	    return [NSString stringWithFormat:@"你好 %@", name];
       14  	}
       15  	@end
    Target 0: (demo-app-ob-storyboard) stopped.
    (lldb) p name
    (NSTaggedPointerString *) $0 = 0x4efa213d7d9a3739 @"sadf"
    (lldb) print name
    (NSTaggedPointerString *) $1 = 0x4efa213d7d9a3739 @"sadf"
    (lldb)
    

    退出

    exit
    

    参考

    手把手教你给企业微信 Mac 客户端去除水印 - X140Yu’s Blog
    Tutorial — The LLDB Debugger

  • 相关阅读:
    (深入.Net平台和C#编程)第十章.课程总复习.20170413
    (深入.Net平台和C#编程)第七章-深入理解多态.上机练习.20170412
    (深入.Net平台和C#编程)第六章上机练习4.李向阳.20170411
    (深入.Net平台和C#编程)第六章上机练习3.李向阳.20170411
    (深入.Net平台和C#编程)第六章上机练习2.李向阳.20170411
    (深入.Net平台和C#编程)第六章上机练习1.李向阳.20170411
    S2T40.(深入.Net平台和C#编程)第四章.简答题5.李向阳.20170406
    S2T40.(深入.Net平台和C#编程)第四章.简答题4.李向阳.20170406
    潇洒哥
    深入.NET平台和C#编程.第九章:文件操作.上机练习3-5
  • 原文地址:https://www.cnblogs.com/qulianqing/p/13079554.html
Copyright © 2020-2023  润新知