我正试图找到在剥离的二进制文件上使用oprofile的方法 当符号表可用时,仍会获得详细信息 后来,但到目前为止我还没有找到任何解决方案。
以下是我的情况:我们的软件已发送给我们的客户剥离,但我们的构建机器上有未剥离的版本。什么时候 我们有一个软件崩溃,回溯可以发送回我们 可以使用本地未剥离的版本来解释它。
由于oprofile是关于采样和解释样本,有没有办法解除这个过程?有没有办法让oprofile / opreport生成基于十六进制地址的配置文件信息,这些信息可以在具有所有可用符号的不同机器上解释。也许我可以通过复制样本文件来做到这一点?
我相信它一定是可能的,所以我正在向专家寻求建议。详细的步骤会很好。
提前致谢。
答案 0 :(得分:1)
我找到了办法。它可能不是最好的,但我很惊讶这没有产生足够的兴趣。
假设您有一个名为“mybin”的二进制文件,并在客户站点运行其剥离版本。这将是我的程序:
要求客户(或您的现场工程师)运行oprofile, 整整九码(设置,启动,转储和关闭),然后执行:
tar czf OP-`date +"%Y%m%d%H%M%S"`.tgz /var/lib/oprofile
然后运回来。
在您的构建计算机上,执行以下操作
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”的详细信息。