使用opt命令进行LLVM分段故障

时间:2014-08-10 16:28:16

标签: llvm

当我尝试在文件XXC上运行llvm中给出的非常简单(Hello world)传递(我的文件是传递Hello.cpp)时 (X64 OS) opt命令

opt -load ../../../Release+Asserts/lib/Hello.so -hello vv.bc > vv.txt

发出此错误

0  libLLVM-3.2svn.so 0x00007f314b0f1e52
1  libLLVM-3.2svn.so 0x00007f314b0f22b3

2  libpthread.so.0   0x00007f314a0c7340

3  libstdc++.so.6    0x00007f31499645cb std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) + 11

4  libLLVM-3.2svn.so 0x00007f314aadef1d llvm::createPrintFunctionPass(std::string const&, llvm::raw_ostream*, bool) + 77

5  libLLVM-3.2svn.so 0x00007f314aad1585 llvm::PMTopLevelManager::schedulePass(llvm::Pass*) + 37

6  opt               0x0000000000413e4f main + 4767

7  libc.so.6         0x00007f31492eeec5 __libc_start_main + 245

8 opt 0x000000000040dfca 堆栈转储:

0.  Program arguments: opt -load ../../../Release+Asserts/lib/Hello.so -hello vv.bc 

分段错误(核心转储)

任何建议都会令人感激。我是Linux和llvm的新手

1 个答案:

答案 0 :(得分:1)

我发现非常有用的东西是使用verifier pass

首先,确保基本opt流按预期工作,并且输入文件是合法的:

opt -verify vv.bc -o out.bc

然后确保您的通行证成为合法模块:

opt -load ../../../Release+Asserts/lib/Hello.so -hello -verify vv.bc -o out.bc

如果仍然没有帮助,我会启动调试器。