GDB不会在动态加载的.so文件中中断吗?

yao*_*bin 4 linux gdb shared-libraries

在我的Linux系统中,我正在编写一个程序,该程序在运行时会动态加载一些.so库。就像这样:可执行程序在开始运行时将在特定目录下搜索,然后将所有.so文件加载到该目录中。请注意,可执行文件和.so是独立构建的,并且可执行文件的构建不会链接到.so文件。

我的问题是:运行带有GDB的程序(因此,所有.so库都已加载)后,我似乎能够在.so文件中的代码上设置断点(GDB提示我该断点是在共享库中设置),但此断点实际上不会中断。

我应该如何使这些断点真正起作用? 在调试会话期间,我在正确的位置提供了所有源代码,并且-g选项已启用。编译时,我还删除了-O2优化。

ks1*_*322 6

检查是否已正确加载.so文件的调试信息。查看command的输出(gdb) info sharedlibrary。如果您的库在已加载的库表中显示为星号(*),则表示未加载调试符号,并且gdb无法在此.so的断点处停止。