使用lldb显示函数outparam结果

问题描述 投票:0回答:1

我目前正在使用lldb调试非常大的应用程序,并且我对某个函数(在此为pthread_create)的所有调用都感兴趣。我想知道调用堆栈以及所有这些调用的结果,这些结果作为out参数传递。

获得调用栈很简单:

break set pthread_create
break command add 1.1
  bt
  continue
  DONE

但是,我还要打印每次对该函数的调用的结果(最好是在bt之后)。

实际上,我基本上想替换执行

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

至:

  • 运行原始文件pthread_create;
  • 显示thread的值;
  • 显示回溯;
  • 照常从pthread_create返回。

lldb可以让我这样做吗?

lldb
1个回答
0
投票

这可以通过添加以下内容来完成:

  1. [finish(aka thread step-out)] >>
  2. script lldb.thread.return_value.unsigned
  3. 运行finish将运行原始的pthread_create。之后,可以通过lldb.thread.return_value.unsigned访问返回值。

    产生的断点命令将是:

v thread
bt
finish
script lldb.thread.return_value.unsigned
continue

[v thread打印thread变量。

© www.soinside.com 2019 - 2024. All rights reserved.