GDB 如何在 DLOPEN 打开的动态库中设置断点

gdb how to set breakpoint in dynamic library opened by dlopen

本文关键字:动态 设置 断点 DLOPEN GDB      更新时间:2023-10-16

下午,每个人。我有一个由main.c编译的应用程序"测试"。一个动态的联络"libtest.so",通过测试编译.cpp带有"-g"。在main.c中,我用"dlopen"调用"libtest.so"。现在我想在测试中设置一个断点.cpp但 gdb 从未命中它。我做如下:

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

断裂测试.cpp:35

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

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

为此:

  • dlopen之后main.c中设置断点。
  • 确认返回的句柄未NULL

此时,GDB 应该已加载libtest.so符号,并且libtest.so应显示在 GDB 输出info shared

如果一切正常,info break应该在某个地址的test.cpp:35中显示一个活动的断点。如果从未命中该断点,则很可能您从未实际执行过该行代码。