IOS开发常用的调试命令

XCode4.0以后,编译器是LLVM,控制台调试命令前缀是lldb

第一、LLVM简介

LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。

第二、 对关注编译技术的开发人员,LLVM提供了很多优点:

现代化的设计
LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题所在。
语言无关的中间代码
一方面,这使得透过LLVM能够将不同的语言相互连结起来;也使得LLVM能够紧密地与IDE交互和集成。
另一方面,发布中间代码而非目标代码能够在目标系统上更好地发挥其潜能而又不伤害可调试性(i.e. 在目标系统上针对本机的硬件环境产生目标代码,但又能够直接通过中间代码来进行行级调试)
作为工具和函数库
使用LLVM提供的工具可以比较容易地实现新的编程语言的优化编译器或VM,或为现有的编程语言引入一些更好的优化/调试特性。
第三、使用前提:

1.既然是调试命令,理所当然的,程序模式应该选择Debug模式。

2.在Debug模式下,如果你的程序在运行中崩溃(Crash)掉,那么恭喜你,使用lldb调试的机会来了。

符合以上两个条件之后,控制台(即日志输出窗口All Output)会自动打出一个(lldb)命令,此时你就可以进行调试。

第四、常用的调试命令

po

po是print-object的简写,可用来打印所有NSObject对象。sample code:

(lldb) po self.view

<UITableView: 0xdb00200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x8b3ca50>; layer = <CALayer: 0x8b3c110>; contentOffset: {0, 0}>

(lldb) po self

<RootViewController: 0x9813e90>

p

p是print的简写,可以用来打印所有的简单类型,如int, float,结构体等。sample code:

ItemData item;
        item.nMainID=1;
        item.nSubID=2;
        item.pszTitle=@"hello";
    
        NSRect rect=NSMakeRect(0, 10, 10, 10);
   调试命令及输出结果:

(lldb) print rect

(NSRect) $0 = (x=0, y=10), (width=10, height=10)

(lldb) p item

(ItemData) $3 = {

  pszTitle = 0x0000000100001370 @"hello"

  nMainID = 1

  nSubID = 2

}

call

call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call

bt

这时Xcode会自动输出最后的一次调用堆栈

(lldb) bt

* thread #1: tid = 0x101ea, 0x00002cdf tabaleView`-[RootViewController initWithStyle:](self=0x09813e90, _cmd=0x009b99c2, style=UITableViewStylePlain) + 127 at RootViewController.m:23, queue = 'com.apple.main-thread, stop reason = breakpoint 1.1

    frame #0: 0x00002cdf tabaleView`-[RootViewController initWithStyle:](self=0x09813e90, _cmd=0x009b99c2, style=UITableViewStylePlain) + 127 at RootViewController.m:23

    frame #1: 0x004e5add UIKit`-[UITableViewController init] + 41

    frame #2: 0x00002852 tabaleView`-[AppDelegate application:didFinishLaunchingWithOptions:](self=0x08c0d610, _cmd=0x00998cd4, application=0x08a1f160, launchOptions=0x00000000) + 546 at AppDelegate.m:19

    frame #3: 0x00224355 UIKit`-[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309

    frame #4: 0x00224b95 UIKit`-[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536

    frame #5: 0x002293a8 UIKit`-[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824

    frame #6: 0x0023d87c UIKit`-[UIApplication handleEvent:withNewEvent:] + 3447

    frame #7: 0x0023dde9 UIKit`-[UIApplication sendEvent:] + 85

    frame #8: 0x0022b025 UIKit`_UIApplicationHandleEvent + 736

    frame #9: 0x036e02f6 GraphicsServices`_PurpleEventCallback + 776

    frame #10: 0x036dfe01 GraphicsServices`PurpleEventCallback + 46

    frame #11: 0x016b4d65 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53

    frame #12: 0x016b4a9b CoreFoundation`__CFRunLoopDoSource1 + 523

    frame #13: 0x016df77c CoreFoundation`__CFRunLoopRun + 2156

    frame #14: 0x016deac3 CoreFoundation`CFRunLoopRunSpecific + 467

    frame #15: 0x016de8db CoreFoundation`CFRunLoopRunInMode + 123

    frame #16: 0x00228add UIKit`-[UIApplication _run] + 840

    frame #17: 0x0022ad3b UIKit`UIApplicationMain + 1225

    frame #18: 0x00002c2d tabaleView`main(argc=1, argv=0xbfffee5c) + 141 at main.m:16






<think>好的,用户想要查找iOS开发或使用中常用的终端命令列表。首先,我需要回忆一下之前提供的引用内容,特别是引用[4]里提到了一些iOS常用终端命令,比如ios-deploy相关的命令。不过用户可能需要更全面的列表,包括开发调试和日常使用的命令。 接下来,我需要考虑iOS开发者在终端中常用的场景,比如设备管理、应用安装、日志查看、网络调试、包管理、Flutter相关命令、模拟器操作、构建和编译、系统信息以及越狱相关命令。每个类别下有哪些常用命令呢? 设备管理方面,ios-deploy确实是个重要工具,可以查看连接设备和安装应用。然后,ideviceinstaller也是类似的工具,可能也需要提及。应用安装和卸载的命令需要包括这些工具的使用示例。 日志查看方面,idevicesyslog是查看设备系统日志的,而tail -f可以实时查看日志文件。网络调试的话,lsof查看端口,ping和nslookup用于网络测试,curl测试API请求。 包管理方面,Homebrew在macOS上常用,安装iOS工具如CocoaPods和fastlane。CocoaPods的pod install和pod update是必须提到的。 Flutter开发相关命令,比如flutter create、flutter run,这些在引用[2]中提到过,需要包含进来。模拟器操作方面,xcrun simctl命令可以启动、安装应用和擦除模拟器,这些对开发者很有帮助。 构建和编译方面,xcodebuild用于构建项目,security命令处理证书和钥匙串。系统信息如system_profiler和sw_vers可以查看硬件和系统版本。 越狱相关命令,如Cydia的安装和OpenSSH的使用,引用[1]和[3]提到过,但用户可能只是普通开发者,这部分可能作为扩展,放在最后。 需要注意命令的格式是否正确,比如$符号包裹,如$ ios-deploy -c。同时要确保每个命令都有简要说明和使用示例,方便用户理解。还要检查是否有遗漏的常用命令,比如git相关的,不过可能用户更关注iOS特定命令,所以可能不需要包括git基础命令。 最后,生成相关问题时要围绕iOS命令开发工具、调试技巧等方面,帮助用户深入了解更多内容。需要确保回答结构清晰,分门别类,便于用户查找。同时,引用来源要正确对应,比如引用[4]中的ios-deploy命令,引用[2]中的Flutter命令,引用[3]中的终端工具。</think>iOS开发及设备管理中常用的终端命令可分为设备管理、开发调试、系统工具等多个类别。以下整理基于越狱和非越狱场景下的实用命令命令前加$符号表示终端输入): ### 一、设备管理命令 1. 查看连接设备 `$ ios-deploy -c` 查看所有连接设备(USB/WiFi)[^4] `$ idevice_id -l` 列出所有连接的iOS设备UDID 2. 应用安装/卸载 `$ ios-deploy --bundle [.app路径]` 安装应用[^4] `$ ideviceinstaller -i [.ipa路径]` 通过USB安装 `$ ideviceinstaller -U [BundleID]` 卸载应用 ### 二、调试日志 1. 系统日志查看 `$ idevicesyslog` 实时显示设备日志 `$ tail -f /var/log/system.log` 查看系统日志(需越狱) 2. 网络调试 `$ lsof -i :8080` 查看端口占用情况 `$ ping $(ipconfig getifaddr en0)` 测试本地网络 ### 三、开发工具链 1. Xcode相关 `$ xcode-select --install` 安装命令行工具 `$ xcodebuild -scheme MyScheme build` 构建项目 2. Flutter开发(需安装Flutter SDK[^2]) `$ flutter create my_app` 创建新项目 `$ flutter run --release` 发布模式运行 ### 四、模拟器操作 ```bash $ xcrun simctl boot "iPhone 14 Pro" # 启动模拟器 $ xcrun simctl install booted MyApp.app # 安装应用到模拟器 $ xcrun simctl erase all # 重置所有模拟器 ``` ### 五、包管理 1. CocoaPods依赖管理 `$ pod install` 安装依赖 `$ pod update Firebase` 更新指定库 2. Homebrew工具 `$ brew install libimobiledevice` 安装iOS设备通信库 ### 六、越狱扩展命令(需OpenSSH[^1]) 1. 系统级操作 `$ apt-get install coreutils` 安装基础工具 `$ scp root@device_ip:/var/log/syslog ./` 远程获取日志 ### 七、安全相关 ```bash $ security find-identity -v -p codesigning # 查看可用签名证书 $ codesign -dv --entitlements :- /path/to/app # 查看应用权限 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值