1

我正在尝试找到在剥离的二进制文件上使用 oprofile 的方法,但在以后符号表可用时仍然可以获得详细信息,但到目前为止我还没有找到任何解决方案。

这是我的情况:我们的软件被剥离给我们的客户,但我们的构建机器上有未剥离的版本。当我们发生软件崩溃时,回溯可以被发回,我们可以用本地未剥离的构建来解释它。

由于 oprofile 是关于取样和解释样本,有没有办法解耦这个过程?oprofile/opreport 有没有办法生成基于十六进制地址的配置文件信息,这些信息可以在具有所有可用符号的不同机器上解释。也许我可以通过复制示例文件来做到这一点?

我相信这一定是可能的,所以我正在向专家寻求建议。详细的步骤会很好。

提前致谢。

4

1 回答 1

2

我找到了一种方法。它可能不是最好的,但我很惊讶这并没有引起足够的兴趣。

假设您有一个名为“mybin”的二进制文件并在客户站点运行其剥离版本。这是我的程序:

  1. 让客户(或您的现场工程师)运行 oprofile,整个九码(设置、启动、转储和关闭),然后执行以下操作:

    tar czf OP-`date +"%Y%m%d%H%M%S"`.tgz /var/lib/oprofile
    

    并将其运回。

  2. 在您的构建机器上,执行以下操作

    mkdir /tmp/migrate && cd /tmp/migrate
    tar xzf OP-*.tgz
    

    现在您可以通过以下方式检查目标上的总体 CPU 使用率

    opreport -% --session-dir=/tmp/migrate/var/lib/oprofile
    

    如果你的“mybin”是在 /home/nobody/build/1.2.0/ 下构建的,你可以使用

    opreport -l mybin --image-path /home/nobody/build/1.2.0/ --session-dir=/tmp/migrate/var/lib/oprofile
    

    查看“mybin”的详细信息。

于 2011-09-11T01:34:23.067 回答