在gdb

时间:2015-09-24 08:31:04

标签: c++ linux gdb

我的项目使用dlopen在主线程内动态加载一个libray(以调试模式编译),然后使用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)

1 个答案:

答案 0 :(得分:2)

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