【问题标题】:dlopen causes segfault when running in gdbdlopen 在 gdb 中运行时导致段错误
【发布时间】:2015-09-25 14:48:52
【问题描述】:

我的项目使用dlopen 在主线程中动态加载一个库(以调试模式编译),然后毫无问题地使用dlsym。但是,当使用 gdb 7.7.1+dfsg-5 在调试模式下运行时,它会崩溃。我从内核日志中看到这个错误:

gdb[8814]: segfault at 7fff4e019fa0 ip 0000000000718b95 sp 00007fff4e019f90 error 6 in gdb[400000+574000

这导致我无法使用调试器。太可怕了!

我能做些什么来解决这个问题?

我的项目具有这种复杂的结构。我知道它具有罕见的结构,但我被告知要使用外部库。

MAIN RUNNABLE (compiled with S1.so)
|
- SHARED_1 (S1.so) (compiled with s1.a, s2.a, s3.a)
  |  - STATIC_1 (s1.a)
       |  - dlopen S2.so and call functions from S2.so
  |  - STATIC_2 (s2.a)
  |  - STATIC_3 (s3.a)
- DYNAMICALLY_LOADING_1 (S2.so) (compiled with s1.a, s2.a, s3.a)
  |  - STATIC_1 (s1.a)
  |  - STATIC_2 (s2.a)
  |  - STATIC_3 (s3.a)

【问题讨论】:

  • 重现问题的最小示例?
  • :( 从这么大的项目中我无法提取一些东西。
  • 但是问题在于加载的共享库,因为其他库可以加载到 gdb 中。如果你没有那个库,你怎么能复制?
  • 如果是公共库,请告诉我们名称、版本等。如果不是,请告诉我们如何生成具有相同问题的库。无论如何,我们需要一个最小的例子。
  • 我试图给出“罕见”的结构。

标签: c++ linux gdb


【解决方案1】:

完成!这是GDB 7.7.1+dfsg-5 的错误。 我已经安装了GDB 7.10.1,现在它可以工作了!

【讨论】:

    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多