美文网首页
【iOS开发】调试时使用Instruction Pointer改

【iOS开发】调试时使用Instruction Pointer改

作者: Lebron_James | 来源:发表于2019-05-06 19:12 被阅读0次

    在调试过程中,我们可能遇到这样的需求:想通过给某个变量赋不同的值,来看看应用运行的效果。

    通常我们想到的办法是改变变量的值,然后重新运行应用。但这个方法很浪费时间。

    其实在调试的时候,LLDB给我们提供了一个命令,可以直接执行语句,从而改变我们想修改的变量值。这个命令是expr,或者简写成e

    Instruction Pointer的使用

    假如我们有以下代码,想通过改变myName的值,来看看print的打印情况:

    class ViewController: UIViewController {
    
        var myName = "Lebron"
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            if myName.isEmpty {
                print("my name is empty")
            } else{
                print("my name is not empty")
            }
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
    }
    

    我们在else语句的结束大括号位置加一个断点,然后运行,得到的结果如图所示,因为myName不为空,所以打印my name is not empty

    instruction-pointer-1

    看到那个里面有三条横线的框和Thread 1: breakpoint 1.1了吗?这就是Instruction Pointer。我们可以改变这个Instruction Pointer的位置。

    现在我们按住那个框,然后移动到super.viewDidLoad()这一行,Xcode会提示我们是否真的要移动,我们按确定(在开发过程中,我们要根据情况来选择移动的位置,否则可能会造成crash),在控制台输入e myName = "",按回车键,最后按左边那个箭头,继续执行代码,结果如下图:

    instruction-pointer-2

    我们看到控制台输出my name is empty,说明我们的e myName = "" 命令成功修改了myName的值。

    合理的利用LLDB给我提供的这个特性,可以提高我们的调试效率。

    欢迎加入我管理的Swift开发群:536353151

    相关文章

      网友评论

          本文标题:【iOS开发】调试时使用Instruction Pointer改

          本文链接:https://www.haomeiwen.com/subject/jkodoqtx.html