gdb如何在dlopen打开的动态库中设置断点

时间:2014-04-04 09:55:22

标签: c++ c gdb dlopen

下午,感到沉沦。 我有一个应用程序' test'由main.c编译。一个充满活力的liabrary< libtest.so'这是由test.cpp用' -g'编译的。在main.c中,我调用了' libtest.so'与'dlopen' 。现在我想在test.cpp中设置一个断点,但是gdb从来没有打过它。我这样做:

gdb ./test -d / home / lcl / test

break test.cpp:35

运行

任何人都可以给我一些提示,谢谢!

1 个答案:

答案 0 :(得分:3)

您应首先验证dlopen实际上是否成功(很可能不是)。

这样做:

  • 在<{em> main.c之后在dlopen 中设置断点。
  • 确认返回的句柄不是NULL

此时,GDB应加载libtest.so的符号,libtest.so应显示在info shared GDB输出中。

如果一切正常,info break应在test.cpp:35的某个地址显示活动断点。如果永远不会遇到该断点,那么您可能从未真正使用过该行代码。