检查lldb中函数的返回值

SFe*_*eng 21 debugging return-value lldb

是否可以在lldb中检查函数的返回值,假设返回值未分配给变量?

SFe*_*eng 17

退出该功能,并在检查器中查看返回值.这是我的截图:

在此输入图像描述

有关更多详细信息,请参阅文章:https://gist.github.com/schwa/7812916

  • 请注意,仅当您通过"步出"退出该功能时才有效.lldb尚未跟踪所有步骤和步入,以查看其中一个是否已退出某个功能. (4认同)
  • 这仅回答了 XCode 的问题,而不是 lldb (2认同)

sol*_*gar 16

答案是错的,所以我会发布正确的答案.

要检查返回值,您需要(lldb) finish(abbr.for thread step-out)从函数返回要检查的值,然后使用:

(lldb) thread info
Run Code Online (Sandbox Code Playgroud)

这将为您提供类似于此的输出:

thread #1: tid = 0x28955, (frame variables  and stuff), stop reason = step out
Return value: (NSMenu *) $3 = 0x0000600000065280
Run Code Online (Sandbox Code Playgroud)

有这个你可以只:

(lldb) po $3
Run Code Online (Sandbox Code Playgroud)

请注意,gdb仅通过使用检查返回值的方法finish不会为lldb打印任何内容.

此外,正如SFeng所指出的,如果你使用Xcode,你可以在退出之前的函数或方法后在UI检查器中看到它.

  • @tboyce12这对Xcode 8.3.2中的Swift不起作用.不知道其他版本. (2认同)