【问题标题】:How to get lli execution trace如何获取 lli 执行跟踪
【发布时间】:2018-10-28 12:04:37
【问题描述】:

有什么方法可以得到一个 lli 执行跟踪。作为给定程序的示例:

define dso_local i32 @main() {
  %1 = alloca i32, align 4
  store i32 1, i32* %1, align 4
  %2 = load i32, i32* %1, align 4
  ret i32 %2
}

我想要一些运行时输出,例如:

$ lli test.ll -trace

%1 = alloca(4)
st %1, 1       ; [%1] = 1
ld %1 -> %2    ; %2 = 1
ret %2         ; ret 1

我找到了一个 XRay 项目,但它似乎很复杂。是否有任何 llc 原生方式来输出执行跟踪?

【问题讨论】:

    标签: llvm lli


    【解决方案1】:

    我没有找到,最后写了一些足够通用的东西来满足我的需求,但甚至几乎不适合一般用途。一个大问题是任何代码都可以调用本机代码and most code does that very often,因此跟踪器仅在遇到无法处理的CallInst 之前跟踪几条指令。

    如果您只对非常短的指令序列感兴趣,Analysis/ConstantFolding.h 中的函数可能会有所帮助......也可能不会,这取决于您的目的。如果您必须自己编写跟踪器,您可能想四处寻找使用InstVisitor 的代码,其中一些代码可能是可用的、可重用的或一个很好的起点。祝你好运。

    【讨论】:

    • 谢谢,我希望应该有一个简单的方法来做到这一点。我认为出于我的目的,这种方式不合适(我希望找到一个现成的项目或选项)
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2013-01-04
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多