gpt4 book ai didi

c++ - clang 教程 "missing file"上的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:26 26 4
gpt4 key购买 nike

我一直在尝试运行一些 clang 教程,例如 this one我不断收到我用 GDB 跟踪的段错误:

Starting program: /analyser/a.out PrintFunctions.cpp
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
clang::Builtin::Context::InitializeTarget (this=0x6d1fe8, Target=...) at /opt/llvm/src/llvm/tools/clang/lib/Basic/Builtins.cpp:46
46 /opt/llvm/src/llvm/tools/clang/lib/Basic/Builtins.cpp: No such file or directory.
(gdb) bt
#0 clang::Builtin::Context::InitializeTarget (this=0x6d1fe8, Target=...) at /opt/llvm/src/llvm/tools/clang/lib/Basic/Builtins.cpp:46
#1 0x00007fffedff47ba in clang::Preprocessor::Initialize (this=0x6d1d90, Target=...) at /opt/llvm/src/llvm/tools/clang/lib/Lex/Preprocessor.cpp:181
#2 0x00007ffff0efca72 in clang::CompilerInstance::createPreprocessor (this=0x7fffffffe5d8, TUKind=<optimized out>)
at /opt/llvm/src/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:306
#3 0x0000000000402bcd in main (argc=2, argv=0x0) at PrintFunctions.cpp:86
(gdb) quit

知道发生了什么吗?

最佳答案

第 1 步。重建 llvm 和 clang:

 cmake ... -DLLVM_ENABLE_ASSERTIONS=1

 cmake ... -DCMAKE_BUILD_TYPE=Debug

后者将允许你实际进入 clang 和 llvm 中的函数,但前者至少会在你跳过初始化或传递错误参数等时给你一些公平的警告,而不是在某些神秘的地方崩溃它实际上正在被使用(通常比断言晚得多)

第 2 步。修复目标信息。此代码在过去几年中已更改过几次,因此您需要查找执行此操作的地方。查看例如 llvm/tools/llc/llc.cpp 中的代码是一个很好的起点。由于这在几乎每个版本中都是不同的,我不会挖掘 2-3 年前的代码来弄清楚你需要做什么,但你确实需要初始化一些目标,否则你的编译将不会成功。如果您启用断言,您很可能会在合适的地方获得断言。

关于c++ - clang 教程 "missing file"上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com