繁体   English   中英

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

[英]gdb how to set breakpoint in dynamic library opened by dlopen

下午,大家好。 我有一个由main.c编译的应用程序“ test”。 一个动态库“ libtest.so”,由test.cpp用“ -g”编译。 在main.c中,我用'dlopen'调用'libtest.so'。 现在,我想在test.cpp中设置一个断点,但是gdb从未命中它。 我做如下:

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

打破test.cpp:35

有人可以给我一些提示,谢谢!

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

为此:

  • dlopen 之后main.c设置一个断点。
  • 确认返回的句柄不为NULL

那时,GDB应该已经为libtest.so加载了符号,并且libtest.so应该出现在info shared GDB输出中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM