静态链接展开库会导致核心转储

时间:2017-04-28 22:18:38

标签: c++ exception-handling libunwind

此代码使用-std = c ++ 11编译g ++。在 exerciseBug (重新抛出后)中,当 libunwind 链接到静态程序崩溃时,与g ++链接。 LDFLAGS导致崩溃:

  

-Wl,-Bstatic -lunwind -Wl,-Bdynamic -llzma

libunwind 动态链接时,代码正常工作。导致正常操作的LDFLAGS:

  

-Wl,-Bstatic -Wl,-Bdynamic -lunwind -llzma

#include <iostream>

using namespace std;

void exerciseBug()
{
  try {
    throw exception();
  } catch (exception &err) {
    cerr << "caught in exerciseBug\n";
    throw;
  }
}


int main()
{
  try {
    exerciseBug();
  } catch (exception &err) {
    cerr << "caught in main\n";
    ::exit(0);
  }
}

问题是为什么libunwind需要动态链接? (在Ubuntu 16.04上运行; g ++(Ubuntu 5.4.0-6ubuntu1~16.04.4)5.4.0 20160609)

0 个答案:

没有答案